WEBVTT

00:03.820 --> 00:05.350
Hated everyone had their share.

00:05.350 --> 00:06.650
And welcome to another video.

00:06.670 --> 00:12.010
Now, this video can be considered as a bit of an optional because whatever we wanted to do or whatever

00:12.010 --> 00:14.950
we wanted to learn as a back end developer, that is whole done.

00:14.950 --> 00:17.210
That is, we can call it a day for here.

00:17.230 --> 00:20.590
The only thing that I've added now is the key ID and the secret.

00:20.620 --> 00:28.390
Now again, I would like to put up a comment here that this needs to go in a dot E and V file because

00:28.390 --> 00:30.010
that's how it actually comes up.

00:30.010 --> 00:34.360
But since we are just learning this stuff, we are not putting this product in production obviously.

00:34.360 --> 00:36.640
So that is why this is going up here.

00:36.820 --> 00:40.230
Now, what is the most important thing about here is that this is it.

00:40.240 --> 00:44.860
This is all you need to do as a back end developer designed that and make sure you accept the amount

00:44.950 --> 00:47.050
and kind of this is a repeatable concept.

00:47.050 --> 00:48.940
You can just use this exact code.

00:48.940 --> 00:53.340
But again, definitely there can be more information which you might want to send on to the front end.

00:53.350 --> 00:55.180
Maybe you want to restrict some information.

00:55.180 --> 00:56.260
That's up to you.

00:56.560 --> 01:00.520
Now, the next thing is how we can actually go ahead and add this one on to the front end.

01:00.520 --> 01:04.960
Now, on the front end side, if you go up here, I have actually made this one a little bit onto the

01:04.960 --> 01:05.350
color.

01:05.350 --> 01:07.690
So no big deal there, just some background color.

01:07.690 --> 01:08.440
That's much of the code.

01:08.440 --> 01:08.980
That's it.

01:09.310 --> 01:12.040
Now let's go ahead and see that, how we can put it into the front end.

01:12.040 --> 01:16.090
Reminding you again, this is a front end part, not a part of the course.

01:16.090 --> 01:21.850
I'm just putting it so that you get a mode feel and an idea that how this is this flow entirely works

01:21.850 --> 01:22.170
on.

01:22.420 --> 01:26.200
So moving on, we go on to the classic page of the integration.

01:26.200 --> 01:30.610
This is basically where the front end developer hangs around that how I'm going to integrate things

01:30.610 --> 01:35.110
onto the front end part, whether that's a JavaScript, android, it doesn't work in the high, who

01:35.140 --> 01:38.980
has that much, but still they provide it nice of them and all these other.

01:38.980 --> 01:41.290
We are definitely into the web integration part.

01:41.290 --> 01:44.320
We want to see how the docs actually work on with that.

01:44.980 --> 01:47.950
So this is the basic integration on the very home page.

01:47.950 --> 01:51.610
They say, hey, once you are done with that video tutorial, is there not that much?

01:51.610 --> 01:53.700
Nice to be honest, but it's good.

01:53.710 --> 01:58.690
It says create a razorpay account, generate the API keys in the test mode and all of that, and then

01:58.870 --> 02:01.500
basically create an order from your server.

02:01.510 --> 02:03.850
This is where we come in the back end of the person.

02:03.850 --> 02:08.650
We have already done that into that and this is basically the exact same code that that gives you.

02:08.650 --> 02:11.890
But in the back end API, it is much nicer than this one.

02:12.400 --> 02:17.230
And coming a little bit on to the bottom page, it says you have two options now that you can actually

02:17.230 --> 02:22.540
go ahead and have a manual checkout with the handler function or you can do a manual checkout with the

02:22.540 --> 02:25.090
URL, callback, whatever is your style of writing the code.

02:25.090 --> 02:26.260
Both of them are correct.

02:26.470 --> 02:30.610
We are going to just copy paste this one so that we can see that how it works on.

02:32.750 --> 02:40.220
So let's go ahead and simply paste this up here and let's see if we are making a whole lot of problems

02:40.220 --> 02:40.700
up here.

02:40.700 --> 02:42.560
I'm pretty sure we might be.

02:42.830 --> 02:46.520
So, yes, we are making a whole lot of problems up here.

02:47.750 --> 02:47.890
Okay.

02:47.990 --> 02:50.000
So this one is not really nice.

02:50.000 --> 02:53.540
Let me hit command Z and try to copy it manually so that we get a better idea.

02:53.540 --> 02:56.240
So we basically want to just select all of this.

02:57.030 --> 02:58.950
And we want to grab all of this a script.

02:58.950 --> 03:04.050
So let me just go ahead, click up here and just hold on my shift key and click up here.

03:04.050 --> 03:08.220
So this is the whole data that we want to bring in and we want to paste it up here.

03:08.220 --> 03:11.130
So there we go, nice and easy, and there we go.

03:11.460 --> 03:13.660
Now, let's try to understand this one by one.

03:13.680 --> 03:16.440
First and foremost, it has introduced a new button for us.

03:16.440 --> 03:21.450
So let me go ahead and save this and show you on the Web page itself that if I go ahead and hit a reload,

03:22.050 --> 03:26.280
I know this is a really tiny button, but we got a button up here.

03:26.280 --> 03:28.320
I hope you can see that this is the pay button.

03:28.320 --> 03:30.330
So this is the basics of it.

03:30.330 --> 03:32.730
And let's go ahead and see what else it is saying.

03:32.910 --> 03:37.980
So basically, the idea is you can pass on all these options and can actually work on with that.

03:37.980 --> 03:39.930
It will open up the intent and all of that.

03:39.930 --> 03:42.630
But right now, this is fine.

03:42.630 --> 03:47.460
If I go ahead and try to click on this one, this actually says, hey, oops, something got wrong and

03:47.460 --> 03:49.590
all of that, and it's basically not working.

03:49.590 --> 03:52.560
The reason for that is this is out of the box, a method.

03:52.560 --> 03:54.840
You need to configure it a little bit on the front end part.

03:54.840 --> 03:56.070
Let's go ahead and do that.

03:56.250 --> 04:00.390
So I'll go at the top up here in the script section itself.

04:00.390 --> 04:01.080
There we go.

04:01.080 --> 04:03.540
And make sure this script is really required.

04:03.540 --> 04:09.240
This is going to open up the intent, the pop up that you see on the razor on the razor page screens.

04:09.240 --> 04:13.740
Okay, so how we're going to get start first, we need to grab this button here.

04:13.740 --> 04:14.820
So we are going to grab this.

04:14.820 --> 04:16.020
Of course it is not react.

04:16.020 --> 04:17.520
So we cannot put up all these methods.

04:17.520 --> 04:19.820
We need to grab that with the classic JavaScript way.

04:19.830 --> 04:25.350
So I'm going to go ahead and call this one as Razorpay Button or R.P. button, and we're going to grab

04:25.350 --> 04:31.500
it by simply saying, Hey, document dot, get element by ID because a nice ID is provided to us in

04:31.500 --> 04:32.100
this one.

04:32.550 --> 04:34.560
Really thankful to these guys.

04:34.560 --> 04:35.400
There we go.

04:36.510 --> 04:42.090
Now, once you have access of this razor pay button, you can actually go ahead and put up a handler

04:42.090 --> 04:43.650
here, which is a click handler.

04:43.650 --> 04:44.760
Let's go ahead and do that.

04:44.760 --> 04:50.130
We're going to go ahead and say, hey, R.P. Button, we're going to go ahead and simply add an event

04:50.130 --> 04:51.060
listener onto you.

04:51.060 --> 04:52.410
What is going to listen it?

04:52.440 --> 04:56.250
It will listen on to the click events now once it has been done.

04:56.250 --> 05:00.960
Now, obviously, these things, when it is talking to the servers and going back, I told you, these

05:00.960 --> 05:03.000
are all asynchronous activities.

05:03.000 --> 05:05.640
Always remember the server is somewhere on the other continent.

05:05.650 --> 05:08.550
So we're going to go ahead, go with the classic async.

05:08.580 --> 05:13.860
It will give you an event and then you can just go ahead and fire up a method just like this.

05:14.070 --> 05:18.660
Now, in this, the first thing, remember, the first step is actually to send a request on to the

05:18.660 --> 05:19.050
server.

05:19.050 --> 05:20.940
You need to create an order from the server.

05:20.940 --> 05:21.840
This is the flow.

05:21.880 --> 05:23.190
I'm not making this up.

05:23.190 --> 05:26.820
This is actually literally mentioned up here onto this page.

05:26.820 --> 05:31.410
If you scroll a little bit that hey, pass the order ID and the other options.

05:31.410 --> 05:35.250
So from where you are going to get order ID in the step one, create an order from your server.

05:35.250 --> 05:37.380
So this is what it is written up here.

05:37.530 --> 05:40.260
So we cannot actually make a direct request.

05:40.260 --> 05:45.090
We probably might want to use something like Axios or something in case you are using React or something.

05:45.090 --> 05:47.310
But we can also make a direct request.

05:47.310 --> 05:56.460
So what we're going to do is hold the response requests, come on response, and we're going to go ahead,

05:56.460 --> 06:02.910
of course await and we are going to use the classic JavaScript fetch method to fetch a request.

06:02.940 --> 06:09.120
Now the good thing is, since this is whole, is being inside the public directory and the our express

06:09.120 --> 06:11.820
server knows about it, I can directly say order.

06:11.820 --> 06:16.740
So this is the route that we are getting up here, the route I can directly make a request.

06:16.740 --> 06:21.840
Otherwise if it is a separate page, I need to make a course and then I have to send the entire path

06:21.840 --> 06:22.380
and all of that.

06:22.380 --> 06:23.850
I don't need to do it right now.

06:24.750 --> 06:27.960
Moving on, once you have made the request, let's go ahead and pass it on.

06:27.960 --> 06:30.360
Other option, because this is not a regular request.

06:30.360 --> 06:34.230
This is a post method request which requires a couple of more parameters.

06:34.230 --> 06:35.670
So what are more parameters?

06:35.670 --> 06:41.010
Of course, first, tell that this is a type of post request that is going on with the post request.

06:41.010 --> 06:45.780
You need to pass on a header as well because obviously we need to send what amount you'll be detecting.

06:45.930 --> 06:48.300
Remember, memory, jog memory.

06:48.750 --> 06:54.360
We are we are expecting that somebody will say amount and it will come in request amount.

06:54.360 --> 06:56.400
So we need to make sure we mention that.

06:56.400 --> 07:02.640
So we're going to go ahead and say, hey, headers are also coming in and there is a content dash type

07:02.640 --> 07:10.110
of the header what type it is, it is application slash JSON pretty easy and that's all you need to

07:10.110 --> 07:10.470
do.

07:10.650 --> 07:12.660
Now of course we have sent the method header.

07:12.660 --> 07:14.070
Next thing is the body.

07:15.390 --> 07:17.670
So let's go ahead and send the body as well.

07:17.670 --> 07:23.940
This is how we send the body and the body needs to be send up either into the form or in the JSON.

07:23.940 --> 07:26.970
I'm going to directly use a JSON here we are shortcutting the things.

07:26.970 --> 07:32.280
So let's just say JSON shrink ify and we are going to go ahead and say, hey, I'm sending you a mount

07:32.280 --> 07:37.560
which is off 50 or 500, whatever you like, I'm sending here 500.

07:37.560 --> 07:42.270
This is really 500 because at the back end we are actually multiplying it by 100.

07:42.270 --> 07:47.730
So this is actually what the user is passing up on the top 505,000, whatever you want to spend because

07:47.730 --> 07:51.540
this is a test account, feel free to say send even five lac, whatever you like.

07:51.540 --> 07:53.340
Okay, so this is all done.

07:54.180 --> 07:56.430
This is the basic part of it now.

07:56.530 --> 07:58.300
Obviously we'll be receiving a response.

07:58.300 --> 08:02.540
And what I'm sending in the response, let's go ahead and check that this is the response.

08:02.560 --> 08:04.700
I'm not interested in much on the success or amount.

08:04.720 --> 08:06.400
You can you can work on with that.

08:06.400 --> 08:11.500
I'm more interested in what I receive as an order, so I'm going to go ahead and structure that.

08:11.500 --> 08:16.900
So I'm going to go ahead and say, Hey, I want to structure order from the response.

08:17.230 --> 08:19.780
And again, I can say response order and all of that.

08:19.780 --> 08:21.430
So we can go ahead and work on with that.

08:21.720 --> 08:21.950
Okay.

08:21.970 --> 08:23.770
Now I have access to this order.

08:23.770 --> 08:26.890
Now what I have to do is I have to provide these options.

08:26.890 --> 08:28.870
Notice here key is also being provided.

08:28.870 --> 08:30.340
They need to be here.

08:30.370 --> 08:34.900
This is actually once the order is done, the order has been received by the back end itself.

08:34.900 --> 08:38.140
Now the back end is providing you all that information on the front end.

08:38.380 --> 08:43.540
So we're going to go ahead and take all of these options first and then we're going to talk about this

08:43.540 --> 08:44.590
part in a minute.

08:44.590 --> 08:50.110
So let's cut this out and we obviously need to move into this add listener because everything is going

08:50.110 --> 08:50.560
flow.

08:50.890 --> 08:54.310
We don't need to use this flow nodes pre fill.

08:54.910 --> 08:56.860
That's no use for us as of now.

08:57.130 --> 08:57.660
Okay.

08:58.150 --> 09:04.180
Now most importantly, these are written in the classic JSON, but they need to go something like this.

09:04.180 --> 09:07.150
So amount just like this and amount.

09:07.150 --> 09:07.550
There we go.

09:07.630 --> 09:11.890
You can pass on the amount from here as well, but you don't need because we are actually passing it

09:11.890 --> 09:13.300
from the back end itself.

09:13.330 --> 09:16.570
You need to market here as well, but it's not really required.

09:16.780 --> 09:21.010
So currency, we don't need name, description and image.

09:21.010 --> 09:27.220
We are going to remove that and the order ID is going to come up from the order that we have received.

09:27.220 --> 09:28.600
Remember, we have restructured that.

09:28.600 --> 09:34.960
So order has a property of ID and this handler seems fine, but this needs to go away.

09:34.960 --> 09:35.710
There we go.

09:36.010 --> 09:38.050
Looks okay to me.

09:38.200 --> 09:38.510
Okay.

09:38.530 --> 09:39.580
This is the basic of it.

09:39.580 --> 09:41.500
Now let's see what's also remaining.

09:41.500 --> 09:46.090
We are not going to handle the failure part as of now, so we're going to go ahead and remove this failure

09:46.090 --> 09:46.750
handler.

09:47.170 --> 09:50.170
And now we need to create this options.

09:50.500 --> 09:56.200
We need to just basically grab this part, cut this out and paste it up here.

09:56.200 --> 10:01.120
So where these are so options actually end here and we can paste this up here.

10:01.510 --> 10:04.390
Now this is creating a razorpay instance.

10:04.390 --> 10:07.900
So this is how we create that new razorpay pass on all these options.

10:07.900 --> 10:10.120
Remember, we are creating all these options up here.

10:10.120 --> 10:11.470
So this is our options.

10:12.070 --> 10:13.960
This actually goes up all here.

10:13.960 --> 10:19.480
So this gives us kind of a razorpay instance and we don't need to now document or get element by ID

10:19.480 --> 10:20.710
because we have already done that.

10:20.710 --> 10:22.090
We are already inside that method.

10:22.090 --> 10:25.000
So we need to actually modify this a tiny bit.

10:25.030 --> 10:31.420
We can actually use this or see I'm using the classic example that they have given up and you can directly

10:31.420 --> 10:33.220
put up an open intent on that.

10:33.400 --> 10:34.900
That's it, that's it.

10:35.350 --> 10:35.580
Okay.

10:35.680 --> 10:38.320
So it looks okay to me as of now.

10:38.320 --> 10:39.760
Let's go ahead and save this one.

10:39.970 --> 10:44.320
And again, make sure we need to just copy paste the key as well from where you are going to get the

10:44.320 --> 10:45.160
key, I got mine.

10:45.160 --> 10:47.440
So I need to tell you from where you need to get yours.

10:47.440 --> 10:50.290
So go login into that and click on the settings.

10:50.290 --> 10:53.650
And inside the settings you're going to find the API keys pretty easy.

10:53.650 --> 10:55.120
Just click on this notice.

10:55.120 --> 11:00.790
It is going to show you the both things key ID and the secret key ID you can pass on to anybody.

11:00.820 --> 11:03.310
Simple classic cryptography.

11:03.310 --> 11:04.750
The secret is really important.

11:04.750 --> 11:07.930
That always needs to stay on your server very secretively.

11:07.930 --> 11:09.550
That's all you need to know about.

11:09.550 --> 11:10.930
So go ahead, click on this one.

11:10.930 --> 11:14.590
I've already grabbed mine from here, the same place.

11:14.830 --> 11:16.410
Go on to the index tags.

11:16.420 --> 11:19.780
This is the exact ID that we need to use and the front end as well.

11:19.780 --> 11:21.490
It is required secret.

11:21.490 --> 11:22.870
Make sure it's a secret.

11:23.020 --> 11:26.710
Let's go ahead and put up our key ID just like that.

11:27.730 --> 11:28.370
Okay.

11:28.720 --> 11:32.620
I hope this is all we have actually grabbed most of the thing from the front end.

11:32.710 --> 11:37.190
Again, I have skimmed through a lot of features because this is not a classic front end.

11:37.220 --> 11:42.940
Of course I'm going to stop the server just for okay, so there we go.

11:43.240 --> 11:49.810
Our server is up and running, going back up here, hit a reload and now let's go ahead and try to pay

11:49.810 --> 11:50.380
that.

11:51.100 --> 11:53.890
And this is not logging in.

11:53.890 --> 11:55.450
Let me go ahead and quickly see that.

11:55.450 --> 11:57.580
Why is it not logging in?

11:58.480 --> 12:00.490
It says there are some of the issues.

12:01.820 --> 12:02.050
Okay.

12:02.120 --> 12:03.620
So let me quickly see that.

12:03.620 --> 12:05.630
Where are the issues and handled?

12:06.020 --> 12:08.590
Are razorpay is not defined.

12:08.900 --> 12:09.500
My bad.

12:09.770 --> 12:11.860
Seems like we have never brought in the razorpay.

12:11.870 --> 12:12.470
My bad.

12:12.660 --> 12:12.910
Okay.

12:12.920 --> 12:18.500
So we're going to say const razorpay in the lowercase.

12:18.500 --> 12:18.860
Of course.

12:18.860 --> 12:20.440
I guess we are using it in lowercase.

12:20.450 --> 12:23.300
We actually borrowed everything from there.

12:23.300 --> 12:26.870
So we are actually never we are never bringing in razorpay.

12:27.440 --> 12:29.360
Yeah, that's that's really bad.

12:29.360 --> 12:30.860
So let's go ahead and bring that up.

12:31.160 --> 12:33.680
So we are using the capital RAZORPAY.

12:33.680 --> 12:38.900
I don't really like it, but hey, Razorpay is going to say require.

12:40.890 --> 12:42.990
And Razorpay.

12:43.410 --> 12:45.120
We need to restart the server here.

12:46.110 --> 12:47.400
Basic mistake.

12:48.120 --> 12:49.720
Hopefully this time it's going to work.

12:49.740 --> 12:51.960
Reload that and let's hit the pay.

12:53.300 --> 12:55.490
And still it is having the issues.

12:56.780 --> 13:00.980
Let me go ahead and quickly see onto the console log that what we are missing it up.

13:00.980 --> 13:06.770
Let's go ahead and say inspect and quickly see the console that what are the issues.

13:12.570 --> 13:15.760
So it says the property of undefined ID.

13:15.790 --> 13:20.640
So yeah, this actually happens a couple of times since we are not using anything react or something.

13:20.650 --> 13:24.320
So I know exactly because I faced this problem in the past as well.

13:24.330 --> 13:27.480
So I know the solution of this one happened to me once.

13:27.480 --> 13:33.240
So what the problem is, it's not able to like grab order from this response here.

13:33.240 --> 13:38.250
That is why it is giving us these kinds of error and this is actually easy to resolve.

13:38.250 --> 13:46.530
So let's go ahead and say that we're going to say convert response and we can go ahead and say, hey,

13:46.530 --> 13:48.270
I want to go ahead and convert this one.

13:48.270 --> 13:49.860
So I'm going to use a weight for that.

13:49.860 --> 13:52.530
And that's the response that we are receiving.

13:52.530 --> 13:54.270
We're going to say dot JSON.

13:54.270 --> 13:59.850
Yeah, we are sending the JSON response, but this is a classic error that sometimes happens.

13:59.850 --> 14:06.240
And now from this converted response, we were we will be able to grab this order again.

14:06.360 --> 14:12.840
This is a classic frontend developer experience, so we are going to go back on to this one, hit a

14:12.840 --> 14:17.790
reload and yep, this is kind of a normal, not of a big issue.

14:17.790 --> 14:21.540
So let's close that, hit a reload and try this one more time.

14:22.230 --> 14:23.100
And there we go.

14:23.100 --> 14:24.900
This time we are able to receive that.

14:24.900 --> 14:29.280
Now what you're going to do is let's go ahead and add nine, eight, nine, eight, nine, eight.

14:29.960 --> 14:32.090
One, two, three, four, five, six, seven, eight, nine, ten.

14:32.090 --> 14:33.940
So this is a classic ten digit number.

14:33.950 --> 14:40.640
Let's go ahead and say my name at ae dot dev and proceed please.

14:40.730 --> 14:43.550
You can pay via card, UPI, net banking, whatever.

14:43.550 --> 14:48.470
I happen to remember the dumb card details by the way, you can get it from the documentation as well.

14:48.470 --> 14:51.110
It's for and all once after that.

14:54.060 --> 14:56.670
Expiry, you can put up any date which is in the future.

14:56.670 --> 15:01.890
That is, let's just say 25 quite futuristic cardholder name.

15:01.890 --> 15:03.180
You can put any no problem.

15:03.180 --> 15:05.240
And one, two, three in the CV.

15:05.250 --> 15:10.080
Let's go ahead and pay that it is going to open up an intend just like this that hey, will you like

15:10.080 --> 15:12.720
to simulate success or the failure?

15:12.720 --> 15:18.180
I would like to simulate success and it has given me this ID from the order.

15:18.180 --> 15:20.520
Remember, this was creating a problem, but for us.

15:20.520 --> 15:24.330
And then if I hit OC, it gives me what else it gives me.

15:24.330 --> 15:25.380
Let me check that.

15:25.680 --> 15:30.060
Okay, so coming back it is giving me the first, it is giving me the payment ID, then it is giving

15:30.060 --> 15:32.010
me the order ID and then the signature.

15:32.010 --> 15:36.870
So whatever you would like to extract and put into your database, you can just go ahead and do that.

15:36.870 --> 15:38.970
Now, this is the basic that I have extracted.

15:38.970 --> 15:41.880
They actually mention a whole lot of things in these handlers.

15:41.880 --> 15:46.080
There's a long documentation list that they gives you out, but this is a classic experience.

15:46.080 --> 15:50.250
And again, this is a common mistake and common error that comes up that whatever it gives you, you

15:50.250 --> 15:53.610
need to actually wrap that around one more time into the JSON.

15:53.610 --> 15:59.280
This happens only index.html or kind of if you are using any templating engine, if you are using something

15:59.280 --> 16:02.310
like React or Angular or anything, I have never faced this problem.

16:02.310 --> 16:04.380
So again this is a classic frontend issue.

16:04.410 --> 16:08.820
We don't want to talk it up here, but I told you, let me just summarize quickly.

16:09.270 --> 16:13.590
There are a couple of more options that can be done, but the major thing is that we need to create

16:13.590 --> 16:18.480
a post route in that we received just the amount that whatever the amount we need to deduct, then we

16:18.480 --> 16:22.680
simply create an instance of Razer pay in which we pass on that hey, we are registered user.

16:22.680 --> 16:23.700
We are not anybody.

16:23.700 --> 16:26.160
We know that this is my ID and this is my secret.

16:26.160 --> 16:26.830
You can verify.

16:26.830 --> 16:30.360
I mean, they verify you and after that you simply provide some of the options.

16:30.360 --> 16:36.270
Now the option list is really, really long, but these two are the basic bare minimum one amount and

16:36.270 --> 16:37.230
what currency?

16:37.230 --> 16:38.880
We also have passed on receipt.

16:38.880 --> 16:40.020
But this is optional.

16:40.170 --> 16:44.730
After that you simply just create an instance order dot create.

16:44.730 --> 16:48.600
It will create a new order and it will give you all the information in my order.

16:48.690 --> 16:50.640
After that, you can pass this on to the front end.

16:50.640 --> 16:53.670
This is the only job that you have as a back end developer.

16:53.670 --> 16:57.750
And again, I'm not cutting out all the parts where I have removed the errors and stuff because this

16:57.750 --> 17:00.540
is an important experience for you that nothing goes perfect.

17:00.540 --> 17:01.950
We all the time debug the code.

17:01.950 --> 17:02.790
That's how it happens.

17:02.790 --> 17:04.890
Sometimes we know it by the past experience.

17:04.890 --> 17:07.140
Sometimes you learn it first time just like you did it.

17:07.290 --> 17:10.350
So that's it for this video and let's catch up in the next one.
