Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,390 --> 00:00:03,060
Welcome back.
2
00:00:03,060 --> 00:00:05,970
So, let's now put the debugging process,
3
00:00:05,970 --> 00:00:07,873
actually into practice.
4
00:00:09,850 --> 00:00:11,760
And we're gonna start really small,
5
00:00:11,760 --> 00:00:15,890
and just fix a very simple bug, using the console.
6
00:00:15,890 --> 00:00:19,160
So let's suppose that in our Smart Thermometer,
7
00:00:19,160 --> 00:00:21,080
that we were working on before,
8
00:00:21,080 --> 00:00:25,000
we need to do some measurements in a unit called Kelvin.
9
00:00:25,000 --> 00:00:27,610
which is the absolute temperature.
10
00:00:27,610 --> 00:00:30,170
And a conversion to Kelvin is pretty easy.
11
00:00:30,170 --> 00:00:33,384
So all you have to do is to add 273,
12
00:00:33,384 --> 00:00:36,433
to the temperature in degrees Celsius.
13
00:00:37,300 --> 00:00:40,320
So let's very quickly create a function,
14
00:00:40,320 --> 00:00:42,183
which will perform this measurement,
15
00:00:44,810 --> 00:00:48,293
and this is of course, all completely fictional,
16
00:00:49,590 --> 00:00:53,073
and this function will actually take no arguments at all,
17
00:00:54,100 --> 00:00:57,840
because we will get the measurement from a command prompt.
18
00:00:57,840 --> 00:01:01,030
So we will basically pretend that the command prompt
19
00:01:01,030 --> 00:01:04,420
is like the thermometer sensor.
20
00:01:04,420 --> 00:01:07,453
And now let's actually create an object here.
21
00:01:08,650 --> 00:01:11,233
So, an object for the measurement.
22
00:01:13,160 --> 00:01:16,090
So we haven't used object in sometime,
23
00:01:16,090 --> 00:01:18,430
and so let's remember that.
24
00:01:18,430 --> 00:01:22,490
And let's just add some arbitrary properties here,
25
00:01:22,490 --> 00:01:26,480
so the type of measurement is gonna be temperature,
26
00:01:26,480 --> 00:01:30,135
and the unit will be in Celsius.
27
00:01:30,135 --> 00:01:33,560
So basically, we will measure temperature in Celsius,
28
00:01:33,560 --> 00:01:37,760
and then we return a converted, version.
29
00:01:37,760 --> 00:01:40,033
And in there somewhere will be a bug.
30
00:01:40,890 --> 00:01:44,830
And now, finally, the value of this measurement will come,
31
00:01:44,830 --> 00:01:47,863
as I just mentioned, from a prompt.
32
00:01:48,750 --> 00:01:51,987
So let's just say "degrees Celsius,"
33
00:01:54,149 --> 00:01:56,793
and to that will then trigger a prompt,
34
00:01:57,740 --> 00:02:01,643
and then let's convert that to Kelvin.
35
00:02:04,150 --> 00:02:05,990
So as I said, all we need to do,
36
00:02:05,990 --> 00:02:09,340
is to take the measurement in degrees Celsius,
37
00:02:09,340 --> 00:02:12,140
and add 273.
38
00:02:12,140 --> 00:02:17,140
So, that means measurement.value,
39
00:02:17,150 --> 00:02:18,213
so this property here,
40
00:02:18,213 --> 00:02:21,653
where that value in degrees Celsius will be stored,
41
00:02:22,950 --> 00:02:25,513
plus 273.
42
00:02:26,700 --> 00:02:30,363
And now we can return, converted value.
43
00:02:31,620 --> 00:02:33,570
And then let's run the function,
44
00:02:33,570 --> 00:02:37,433
and immediately log the result to the console,
45
00:02:38,770 --> 00:02:41,620
so that's measure Kelvin.
46
00:02:41,620 --> 00:02:43,840
And now I will give it a save,
47
00:02:43,840 --> 00:02:46,250
and it will then ask me for the temperature,
48
00:02:46,250 --> 00:02:49,226
so let's say, it's 10 degrees Celsius,
49
00:02:49,226 --> 00:02:52,843
and so now let's wait for the result in Kelvin,
50
00:02:54,470 --> 00:02:59,470
and we get this number, 10,273.
51
00:03:00,160 --> 00:03:03,080
And that is not what we expected.
52
00:03:03,080 --> 00:03:06,972
We wanted 283, but not this number.
53
00:03:06,972 --> 00:03:09,929
So, there's got to be a bug somewhere,
54
00:03:09,929 --> 00:03:11,436
and so let's find it.
55
00:03:11,436 --> 00:03:12,526
and by the way,
56
00:03:12,526 --> 00:03:16,083
the first stage of the process was already this one.
57
00:03:17,200 --> 00:03:20,303
So A was to identify the bug.
58
00:03:22,160 --> 00:03:26,090
Remember, and now we're going to stage B or stage two,
59
00:03:26,090 --> 00:03:28,023
which is to find the bug.
60
00:03:28,900 --> 00:03:33,412
And so, since the bug appears in the converted value,
61
00:03:33,412 --> 00:03:35,420
which is this one,
62
00:03:35,420 --> 00:03:38,770
and this one is derived from this measurement value
63
00:03:38,770 --> 00:03:40,880
let's start by inspecting
64
00:03:40,880 --> 00:03:42,950
that measurement value in the console
65
00:03:42,950 --> 00:03:45,800
to see if something is wrong there.
66
00:03:45,800 --> 00:03:49,463
So, console.log measurement.value,
67
00:03:52,360 --> 00:03:53,203
give it a save,
68
00:03:54,060 --> 00:03:56,859
and of course now we need to input it again,
69
00:03:56,859 --> 00:04:01,500
and so it looks okay, actually, right, so it is 10,
70
00:04:01,500 --> 00:04:04,120
so that's exactly what we input it.
71
00:04:04,120 --> 00:04:06,170
So it looks kind of normal,
72
00:04:06,170 --> 00:04:08,680
I just want to show something here now to you,
73
00:04:08,680 --> 00:04:13,680
which is, that we actually do have things beside console.log
74
00:04:14,270 --> 00:04:19,270
so we also have console.warn, and console.error.
75
00:04:21,070 --> 00:04:24,000
And with this, we can basically generate warnings,
76
00:04:24,000 --> 00:04:25,883
and errors in the console.
77
00:04:27,660 --> 00:04:31,100
So 10 again, and you see that now,
78
00:04:31,100 --> 00:04:33,140
this first one looks like a warning,
79
00:04:33,140 --> 00:04:35,573
and the second one actually looks like an error.
80
00:04:36,540 --> 00:04:39,123
So that's just a matter of formatting,
81
00:04:40,050 --> 00:04:41,950
but it's still interesting I think
82
00:04:41,950 --> 00:04:44,890
but let's take them out,
83
00:04:44,890 --> 00:04:49,730
and so, yeah, right now it looks like everything is correct,
84
00:04:49,730 --> 00:04:51,680
so let's dig a little bit deeper,
85
00:04:51,680 --> 00:04:53,933
and take a look at the entire object.
86
00:04:58,330 --> 00:05:00,000
And actually if it was myself,
87
00:05:00,000 --> 00:05:02,040
I would have done that immediately,
88
00:05:02,040 --> 00:05:05,600
but I want to show you the complete thought process here.
89
00:05:05,600 --> 00:05:08,910
So anyway, let's say, measurement,
90
00:05:08,910 --> 00:05:11,853
so that's the entire object, and not just the value.
91
00:05:12,700 --> 00:05:16,803
Let's turn off this one as well give it a save, 10,
92
00:05:18,010 --> 00:05:23,010
and let's open up, and now we actually see the problem.
93
00:05:23,690 --> 00:05:27,830
You see, the value is a string, and that's because,
94
00:05:27,830 --> 00:05:31,810
as I told you in the last lecture, the prompt function here,
95
00:05:31,810 --> 00:05:33,870
always returns a string.
96
00:05:33,870 --> 00:05:36,710
No matter what we input into that prompt window,
97
00:05:36,710 --> 00:05:38,720
it will always just be a string.
98
00:05:38,720 --> 00:05:42,450
And so that's why we get this end result here,
99
00:05:42,450 --> 00:05:44,840
because as you remember, the + operator,
100
00:05:44,840 --> 00:05:46,480
when it sees a string,
101
00:05:46,480 --> 00:05:49,000
it will convert both operands to a string,
102
00:05:49,000 --> 00:05:50,713
and then concatenate the strings.
103
00:05:52,420 --> 00:05:55,020
Just as another curiosity here,
104
00:05:55,020 --> 00:05:59,210
there is also another way of showing objects in the console,
105
00:05:59,210 --> 00:06:01,540
which is really handy sometimes
106
00:06:02,570 --> 00:06:07,570
so measurement, and so again 10,
107
00:06:08,150 --> 00:06:12,173
and so console.table, gives us this nicely formatted table.
108
00:06:13,140 --> 00:06:15,810
And especially for bigger objects,
109
00:06:15,810 --> 00:06:17,493
that can be quite helpful.
110
00:06:18,800 --> 00:06:23,400
And let's actually leave that here, so that you can see it.
111
00:06:23,400 --> 00:06:27,280
So with this, we completed the second phase,
112
00:06:27,280 --> 00:06:30,460
and that was to find the bug.
113
00:06:30,460 --> 00:06:33,290
And now all we need to do is to fix the bug.
114
00:06:33,290 --> 00:06:37,070
So we need to do that right here where it actually occurs.
115
00:06:37,070 --> 00:06:41,127
Yeah, so up here, so let's see, "cfix."
116
00:06:42,480 --> 00:06:45,900
And so the solution to this is to convert this string
117
00:06:45,900 --> 00:06:48,250
that is returned to a number.
118
00:06:48,250 --> 00:06:50,883
So, let's use the number function.
119
00:06:52,900 --> 00:06:57,063
So we already learned about this one, and the last section,
120
00:06:58,240 --> 00:07:00,933
and so now, we actually expect this to work.
121
00:07:02,600 --> 00:07:05,690
And indeed, now we get 283,
122
00:07:05,690 --> 00:07:08,313
which is exactly what we were looking for.
123
00:07:09,270 --> 00:07:11,860
Great, so this was a very simple example,
124
00:07:11,860 --> 00:07:16,150
of just using the console, in order to hunt down a bug,
125
00:07:16,150 --> 00:07:18,010
and then fix it.
126
00:07:18,010 --> 00:07:20,080
But now let's take it to the next level,
127
00:07:20,080 --> 00:07:23,573
and learn how to use a debugger, in Google Chrome.
128
00:07:28,210 --> 00:07:30,280
And let me quickly show that to you,
129
00:07:30,280 --> 00:07:33,060
with this current function, and for that,
130
00:07:33,060 --> 00:07:36,010
we actually need to make this a little bit bigger,
131
00:07:36,010 --> 00:07:39,000
and now we go here into "Sources,"
132
00:07:39,000 --> 00:07:41,610
so for the first time, we're using the Sources tab,
133
00:07:41,610 --> 00:07:44,540
and then click here on script.Js,
134
00:07:44,540 --> 00:07:46,973
which is our current script.
135
00:07:48,560 --> 00:07:51,793
Okay, then as we move down, we have our code here,
136
00:07:53,130 --> 00:07:54,880
and now here in the debugger,
137
00:07:54,880 --> 00:07:57,650
which is basically these two panels here,
138
00:07:57,650 --> 00:08:00,690
we can set something called breakpoints.
139
00:08:00,690 --> 00:08:04,750
So let's put a breakpoint here in this line of code,
140
00:08:04,750 --> 00:08:06,800
so here, and we set a breakpoint
141
00:08:06,800 --> 00:08:08,853
by clicking here in this left bar,
142
00:08:09,710 --> 00:08:11,750
and so this will set this red point,
143
00:08:11,750 --> 00:08:14,420
which means that there is a breakpoint.
144
00:08:14,420 --> 00:08:16,610
And now when we reload the page,
145
00:08:16,610 --> 00:08:20,710
then the execution will stop exactly at this point.
146
00:08:20,710 --> 00:08:23,351
So basically, execution will freeze in time,
147
00:08:23,351 --> 00:08:26,900
and show us exactly what the execution looks like,
148
00:08:26,900 --> 00:08:31,040
at that moment in time, and that includes all the values,
149
00:08:31,040 --> 00:08:33,550
of all the defined variables.
150
00:08:33,550 --> 00:08:35,743
So let's do that, let's reload,
151
00:08:38,290 --> 00:08:40,680
and so you see, now we are in this function,
152
00:08:40,680 --> 00:08:42,370
and now I can click this button here,
153
00:08:42,370 --> 00:08:44,513
to resume the script execution,
154
00:08:45,510 --> 00:08:48,410
and it will then start going over all these lines,
155
00:08:48,410 --> 00:08:52,910
but now it can only continue if I input a value here.
156
00:08:52,910 --> 00:08:57,480
So that's coming from this prompt, so again, I put 10 here,
157
00:08:57,480 --> 00:09:00,720
hit Enter, then it does all of these lines here,
158
00:09:00,720 --> 00:09:04,330
and finally, we reached the line where I set the breakpoint.
159
00:09:04,330 --> 00:09:07,260
And so that's this one here marked in green now,
160
00:09:07,260 --> 00:09:10,980
and again, at this point, we can then see all the variables.
161
00:09:10,980 --> 00:09:12,960
So Kelvin is still undefined,
162
00:09:12,960 --> 00:09:16,052
because the computation has not yet been done,
163
00:09:16,052 --> 00:09:18,333
but we can take a look at measurement here.
164
00:09:20,310 --> 00:09:23,793
So the value is 10, as we just input it,
165
00:09:25,050 --> 00:09:28,520
and, yeah, this can be very helpful,
166
00:09:28,520 --> 00:09:30,750
in case if you don't want to mess around
167
00:09:30,750 --> 00:09:34,533
with a lot of console.logs, or other stuff like that.
168
00:09:36,850 --> 00:09:39,260
Can also hover these here,
169
00:09:39,260 --> 00:09:41,440
so here we can see the whole object,
170
00:09:41,440 --> 00:09:44,640
here we then can see just the property value,
171
00:09:44,640 --> 00:09:47,520
and now we can execute the rest of the function,
172
00:09:47,520 --> 00:09:50,640
simply by hitting this "Step" button here.
173
00:09:50,640 --> 00:09:53,490
So basically, this will then go to the next line of code,
174
00:09:54,790 --> 00:09:56,823
so now we have Kelvin set at 283,
175
00:09:57,750 --> 00:10:01,090
because now the previous line, just execute,
176
00:10:01,090 --> 00:10:03,010
And here we are in the last line,
177
00:10:03,010 --> 00:10:07,778
and so now we can see here return value will be 283.
178
00:10:07,778 --> 00:10:11,750
So with this one here, we can execute one line at a time.
179
00:10:11,750 --> 00:10:14,580
And for now just ignore these three buttons here,
180
00:10:14,580 --> 00:10:16,580
you can explore them a little bit later.
181
00:10:17,740 --> 00:10:20,690
Okay, so we're almost done, let's just click one more time,
182
00:10:21,600 --> 00:10:23,450
and so we're out of the function now,
183
00:10:24,960 --> 00:10:27,290
and now processing this next line of code,
184
00:10:27,290 --> 00:10:30,490
let's just continue, and so now,
185
00:10:30,490 --> 00:10:32,040
we went into some other stuff here,
186
00:10:32,040 --> 00:10:34,860
and that's actually coming from the live server,
187
00:10:34,860 --> 00:10:37,660
so nevermind, we can just close this,
188
00:10:37,660 --> 00:10:41,410
and now click here on "Resume Script Execution,"
189
00:10:41,410 --> 00:10:42,723
and now we're done.
190
00:10:43,750 --> 00:10:47,410
So this is not all super intuitive, I would say
191
00:10:47,410 --> 00:10:49,790
so just experiment around a little bit,
192
00:10:49,790 --> 00:10:51,323
with these different buttons.
193
00:10:52,460 --> 00:10:56,210
Okay, now, we just need to get rid of this breakpoint here,
194
00:10:56,210 --> 00:10:59,640
otherwise the execution will always stop here in the future.
195
00:10:59,640 --> 00:11:02,300
So just click this red dot here again,
196
00:11:02,300 --> 00:11:03,920
and then it's gone.
197
00:11:03,920 --> 00:11:05,270
And that's how we launch,
198
00:11:05,270 --> 00:11:08,250
and use the debugger in Google Chrome.
199
00:11:08,250 --> 00:11:13,240
Now let's quickly introduce a bigger bug here in our code,
200
00:11:13,240 --> 00:11:16,350
and then fix it using the debugger.
201
00:11:16,350 --> 00:11:17,183
And for that,
202
00:11:17,183 --> 00:11:19,120
I'm simply going to go back,
203
00:11:19,120 --> 00:11:21,193
to this function that we created before,
204
00:11:23,040 --> 00:11:24,633
so, this one here,
205
00:11:27,970 --> 00:11:32,130
and let's call this one here, "bug."
206
00:11:32,130 --> 00:11:34,893
So I'll replace all the news with bug,
207
00:11:36,100 --> 00:11:39,150
so we have here "calcTempAplitudeBug,"
208
00:11:39,150 --> 00:11:40,470
and here we code that,
209
00:11:40,470 --> 00:11:43,703
and then we code the "AmplitudeBug" into here as well, bug.
210
00:11:46,290 --> 00:11:48,453
Cancel that one, and actually,
211
00:11:51,260 --> 00:11:55,650
let's come here, and comment out this piece of code,
212
00:11:55,650 --> 00:11:57,890
so that it doesn't annoy us all the time,
213
00:11:57,890 --> 00:12:02,230
and we can just set the value here manually, to 10 Wrong.
214
00:12:02,230 --> 00:12:06,060
Okay, this way we preserve the code that we have,
215
00:12:06,060 --> 00:12:10,883
and also keep it running, or actually keep it working.
216
00:12:12,010 --> 00:12:16,053
So here, let's just say, using a debugger.
217
00:12:17,940 --> 00:12:20,587
Then down here, we are codling this function,
218
00:12:20,587 --> 00:12:23,700
and here, let's just change this to something else
219
00:12:23,700 --> 00:12:28,700
let's say four, okay, let's just run this now quickly,
220
00:12:29,690 --> 00:12:31,260
and so we see that at the output
221
00:12:31,260 --> 00:12:32,690
at this point is still correct
222
00:12:32,690 --> 00:12:35,680
'cause we didn't introduce any bug yet.
223
00:12:35,680 --> 00:12:38,253
So the max is nine, the min is one,
224
00:12:38,253 --> 00:12:41,760
and therefore the amplitude is eight.
225
00:12:41,760 --> 00:12:44,590
But now let's say that we did a mistake.
226
00:12:44,590 --> 00:12:46,970
And we might have thought intuitively,
227
00:12:46,970 --> 00:12:49,440
that the max and min values,
228
00:12:49,440 --> 00:12:52,603
would be good to have a starting point of zero.
229
00:12:53,720 --> 00:12:57,410
I think you can maybe see why that would make sense.
230
00:12:57,410 --> 00:13:00,850
So for example, we started the sum at zero before,
231
00:13:00,850 --> 00:13:05,240
so why not start the max and the minimum at zero too, right?
232
00:13:05,240 --> 00:13:08,330
It would have been quite reasonable to think that.
233
00:13:08,330 --> 00:13:11,320
And so let's pretend that we did think that,
234
00:13:11,320 --> 00:13:14,140
but this will actually introduce a bug
235
00:13:14,140 --> 00:13:16,960
because with this, this will not work.
236
00:13:16,960 --> 00:13:19,000
So as you see, now,
237
00:13:19,000 --> 00:13:22,880
here it says that the minimum value is zero, right?
238
00:13:22,880 --> 00:13:25,620
So that's coming from from this console.log here,
239
00:13:25,620 --> 00:13:27,920
which says now that minimum is zero,
240
00:13:27,920 --> 00:13:32,450
entered aptitude therefore, is nine minus zero,
241
00:13:32,450 --> 00:13:33,920
which is nine.
242
00:13:33,920 --> 00:13:37,430
So, we identified debug here, okay,
243
00:13:37,430 --> 00:13:41,920
let's again write that, "IDENTIFY"
244
00:13:41,920 --> 00:13:44,360
and so, let's now go back here to Chrome,
245
00:13:44,360 --> 00:13:48,198
and to the debugger to try to find that bug.
246
00:13:48,198 --> 00:13:51,000
And the debugger is actually especially useful
247
00:13:51,000 --> 00:13:52,480
inside of a loop.
248
00:13:52,480 --> 00:13:54,843
And so that situation that we have right now,
249
00:13:56,240 --> 00:13:57,980
so we are in a loop.
250
00:13:57,980 --> 00:13:59,380
And so let's see here, now,
251
00:13:59,380 --> 00:14:01,530
why the maximum and minimum values,
252
00:14:01,530 --> 00:14:03,910
are not being correctly set.
253
00:14:03,910 --> 00:14:05,770
Or actually, it's just the minimum.
254
00:14:05,770 --> 00:14:07,290
The maximum is fine,
255
00:14:07,290 --> 00:14:09,763
but still we need to analyze both of them.
256
00:14:10,730 --> 00:14:12,170
So, what I'm gonna do here,
257
00:14:12,170 --> 00:14:16,670
is to set a breakpoint right here.
258
00:14:16,670 --> 00:14:19,350
Because that's where the maximum and the minimum,
259
00:14:19,350 --> 00:14:21,770
are being computed, okay?
260
00:14:21,770 --> 00:14:25,240
So let's reload, and right away,
261
00:14:25,240 --> 00:14:27,973
we get to this point in the execution.
262
00:14:28,815 --> 00:14:30,400
So at this point,
263
00:14:30,400 --> 00:14:33,460
the temps variable has already been computed,
264
00:14:33,460 --> 00:14:36,150
so it's already this complete array,
265
00:14:36,150 --> 00:14:40,033
max and min are at zero, and so now we are doing this.
266
00:14:40,890 --> 00:14:44,150
So we see that the current temperature is three,
267
00:14:44,150 --> 00:14:48,873
that the maximum is zero, and so next step will end up here,
268
00:14:52,850 --> 00:14:55,390
or let's actually continue, and indeed,
269
00:14:55,390 --> 00:14:59,890
now we see that max is three, and that makes sense, right?
270
00:14:59,890 --> 00:15:03,040
According to the rules that we described earlier.
271
00:15:03,040 --> 00:15:08,040
Okay, moving on here, and we already moved on right
272
00:15:08,480 --> 00:15:10,210
to the next loop iteration,
273
00:15:10,210 --> 00:15:12,510
and that's because we don't have a breakpoint here.
274
00:15:12,510 --> 00:15:14,010
So let's just put another one,
275
00:15:16,260 --> 00:15:18,750
and so now we're in the second iteration.
276
00:15:18,750 --> 00:15:21,263
And so now I is one as you can see here.
277
00:15:23,510 --> 00:15:27,820
Okay, so the current temperature is five,
278
00:15:27,820 --> 00:15:32,093
max is three, and so now the new max should become five,
279
00:15:35,378 --> 00:15:38,737
and again, we jumped over this one,
280
00:15:38,737 --> 00:15:40,483
but let's just keep going,
281
00:15:43,010 --> 00:15:47,440
all right, so now the current temperature is one,
282
00:15:47,440 --> 00:15:51,043
max is five, and so this one will now not get executed,
283
00:15:52,290 --> 00:15:55,840
so now we can see this one, current temperature is one,
284
00:15:55,840 --> 00:15:58,190
which is less than zero, and so,
285
00:15:58,190 --> 00:16:00,290
nothing is going to happen, right?
286
00:16:00,290 --> 00:16:04,550
Now, so here, we actually have the bug itself.
287
00:16:04,550 --> 00:16:05,787
So we know intuitively,
288
00:16:05,787 --> 00:16:09,175
that one here is supposed to be our lowest number.
289
00:16:09,175 --> 00:16:12,760
But the problem is that zero is even lower.
290
00:16:12,760 --> 00:16:16,190
And so it's impossible for any of these numbers here,
291
00:16:16,190 --> 00:16:17,840
to be set as the minimum.
292
00:16:17,840 --> 00:16:20,540
Again, because the initial value that we set,
293
00:16:20,540 --> 00:16:21,920
is already lower,
294
00:16:21,920 --> 00:16:24,570
than any of the values that we have in the array,
295
00:16:24,570 --> 00:16:28,600
and so now, by analyzing this one by one in the debugger,
296
00:16:28,600 --> 00:16:31,630
we can really understand that is what happens.
297
00:16:31,630 --> 00:16:33,540
So again, in this situation,
298
00:16:33,540 --> 00:16:37,060
is where we would like for this one to be set at a minimum.
299
00:16:37,060 --> 00:16:38,420
But it's not gonna happen,
300
00:16:38,420 --> 00:16:41,793
because one is not less than zero here.
301
00:16:43,862 --> 00:16:47,040
And so now, there's not even a point to keep going,
302
00:16:47,040 --> 00:16:48,340
well, we can still do that
303
00:16:49,560 --> 00:16:52,800
so now the current temperature is four, which is this one
304
00:16:55,320 --> 00:16:58,940
and just one more, so I is five,
305
00:16:58,940 --> 00:17:00,919
so we're in the last iteration,
306
00:17:00,919 --> 00:17:03,523
and we see that the maximum is already correct,
307
00:17:07,150 --> 00:17:10,726
and now here, we can actually also see the loop finishing,
308
00:17:10,726 --> 00:17:14,690
because we see that temps.length is six,
309
00:17:14,690 --> 00:17:17,650
and I right now is also six.
310
00:17:17,650 --> 00:17:20,540
So six is not less than six, of course,
311
00:17:20,540 --> 00:17:22,523
and so the loop will now finish.
312
00:17:23,780 --> 00:17:26,450
So you see, now we jumped over the loop,
313
00:17:26,450 --> 00:17:29,700
and we are finally here in this next line of code,
314
00:17:29,700 --> 00:17:34,450
let's go to the next one, and the value to return is nine,
315
00:17:34,450 --> 00:17:37,793
as we already know, because of our bug in the min.
316
00:17:39,930 --> 00:17:41,720
Okay, and that's it.
317
00:17:41,720 --> 00:17:45,920
Now, we stepped over this entire function logic,
318
00:17:45,920 --> 00:17:48,730
and saw exactly what happened line by line.
319
00:17:48,730 --> 00:17:51,800
And again, we're in the in the live server here,
320
00:17:51,800 --> 00:17:53,203
let's just remove this,
321
00:17:54,130 --> 00:17:56,883
and resume the script execution.
322
00:17:58,750 --> 00:18:02,090
Okay, great, so I hope that got you an idea
323
00:18:02,090 --> 00:18:04,440
of how we can use the debugger,
324
00:18:04,440 --> 00:18:08,291
just wanted to tell you that instead of going through
325
00:18:08,291 --> 00:18:10,130
the Sources tab here,
326
00:18:10,130 --> 00:18:14,100
we can actually also call the debugger right from our code.
327
00:18:14,100 --> 00:18:16,100
And all we have to do for that
328
00:18:16,100 --> 00:18:19,113
is to write debugger right here.
329
00:18:20,115 --> 00:18:23,350
So JavaScript has this debugger statement,
330
00:18:23,350 --> 00:18:26,200
and then when the browser sees this debugger,
331
00:18:26,200 --> 00:18:30,100
it will automatically open up the debugger tool.
332
00:18:30,100 --> 00:18:32,040
So when I give it a save now,
333
00:18:32,040 --> 00:18:35,560
you see, that we are right at this point.
334
00:18:35,560 --> 00:18:38,810
So it's like it put a breakpoint here in this point,
335
00:18:38,810 --> 00:18:41,983
and then we can do everything, as we just saw before.
336
00:18:44,420 --> 00:18:47,113
So let's click here on Continue,
337
00:18:48,650 --> 00:18:52,230
or actually, let's just get rid of this here,
338
00:18:52,230 --> 00:18:53,183
give it a save,
339
00:18:54,390 --> 00:18:57,690
or stop this and reload, and yeah,
340
00:18:57,690 --> 00:19:00,450
then we exited that debugger.
341
00:19:00,450 --> 00:19:03,280
Now, this was, of course, just a small example,
342
00:19:03,280 --> 00:19:05,910
but again, this is an extremely powerful tool,
343
00:19:05,910 --> 00:19:08,970
that you can now use whenever you run into a problem,
344
00:19:08,970 --> 00:19:10,210
in the future.
345
00:19:10,210 --> 00:19:13,660
So take a moment now to go through the steps again maybe,
346
00:19:13,660 --> 00:19:15,940
by yourself, and that will then help you,
347
00:19:15,940 --> 00:19:17,760
make you a better developer.
348
00:19:17,760 --> 00:19:20,950
because debugging really is an intrinsic part
349
00:19:20,950 --> 00:19:22,773
of the development process.
27788
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.