WEBVTT

1
00:00:01.305 --> 00:00:02.140
<v Narrator>In this lecture,</v>

2
00:00:02.140 --> 00:00:04.920
we're gonna do two interesting things.

3
00:00:04.920 --> 00:00:08.210
First, we will loop over an array backwards,

4
00:00:08.210 --> 00:00:11.170
and then second we will also create a loop

5
00:00:11.170 --> 00:00:13.240
inside another loop.

6
00:00:13.240 --> 00:00:16.003
So, let's have some more fun with arrays now.

7
00:00:17.610 --> 00:00:20.883
And so, let's get back our array again here.

8
00:00:24.210 --> 00:00:26.560
So, the Jonas' array

9
00:00:26.560 --> 00:00:29.113
and let's forget about this element here.

10
00:00:30.010 --> 00:00:33.610
And so now, as I said, in the beginning of this video,

11
00:00:33.610 --> 00:00:36.730
let's not loop over this array backwards.

12
00:00:36.730 --> 00:00:40.280
So the first element that we want to print is this one,

13
00:00:40.280 --> 00:00:44.130
then this, this, this, and finally Jonas.

14
00:00:44.130 --> 00:00:47.880
So essentially, in the last lecture we looped

15
00:00:47.880 --> 00:00:48.780
from the beginning.

16
00:00:48.780 --> 00:00:51.110
So we started with index zero,

17
00:00:51.110 --> 00:00:56.110
then one all the way to four right?

18
00:00:56.220 --> 00:00:59.260
But now, we want to start at four

19
00:00:59.260 --> 00:01:03.520
then we want to go to three and all the way to zero,

20
00:01:03.520 --> 00:01:06.210
which gonna be the last index.

21
00:01:06.210 --> 00:01:09.350
So, this one is four and this one is zero.

22
00:01:09.350 --> 00:01:12.540
And so, now we need to create the four loop according

23
00:01:12.540 --> 00:01:14.510
to this new information.

24
00:01:14.510 --> 00:01:17.623
So, basically according to this new methodology.

25
00:01:20.500 --> 00:01:22.600
So, let's start again with the counter

26
00:01:23.520 --> 00:01:25.850
and then we'll name it i again,

27
00:01:25.850 --> 00:01:30.280
but now what should be the initial value of the counter?

28
00:01:30.280 --> 00:01:33.700
And we already replied to that question kind of,

29
00:01:33.700 --> 00:01:35.460
so it should be four

30
00:01:35.460 --> 00:01:38.540
but should we just write the four here?

31
00:01:38.540 --> 00:01:40.390
No, we shouldn't, right,

32
00:01:40.390 --> 00:01:43.110
because we already learned that hard coded values

33
00:01:43.110 --> 00:01:45.840
like this are not a good idea.

34
00:01:45.840 --> 00:01:47.640
So what is four?

35
00:01:47.640 --> 00:01:51.260
Well, four is basically just the length of the array,

36
00:01:51.260 --> 00:01:53.433
which is five minus one.

37
00:01:54.510 --> 00:01:57.323
So that's exactly what we will write here.

38
00:01:58.450 --> 00:02:03.450
Jonas.length -1, then the condition

39
00:02:03.730 --> 00:02:06.940
and when do we want the loop to stop?

40
00:02:06.940 --> 00:02:10.520
Well, it should stop after the zero.

41
00:02:10.520 --> 00:02:13.320
And so, the condition we need to write remember

42
00:02:13.320 --> 00:02:14.810
is telling JavaScript

43
00:02:14.810 --> 00:02:18.140
in which condition the loop should keep running.

44
00:02:18.140 --> 00:02:21.140
And so basically, the loop should keep running as long

45
00:02:21.140 --> 00:02:24.243
as the counter is still above zero.

46
00:02:25.750 --> 00:02:29.460
So I should be greater

47
00:02:29.460 --> 00:02:32.630
or equal actually zero.

48
00:02:32.630 --> 00:02:35.190
So, let's quickly simulate that.

49
00:02:35.190 --> 00:02:38.220
So, at number four which is in the beginning,

50
00:02:38.220 --> 00:02:41.560
I is greater equal zero, right?

51
00:02:41.560 --> 00:02:43.420
So, this condition will be true

52
00:02:43.420 --> 00:02:45.860
and so the next iteration will run,

53
00:02:45.860 --> 00:02:49.890
then we need to decrease the index or the counter.

54
00:02:49.890 --> 00:02:52.520
And so, let's actually do that as well.

55
00:02:52.520 --> 00:02:54.980
And so instead of using I plus plus,

56
00:02:54.980 --> 00:02:58.320
which we used before to increment the value

57
00:02:58.320 --> 00:03:01.570
we use minus minus to decrement

58
00:03:01.570 --> 00:03:04.580
or to decrease the value by one.

59
00:03:04.580 --> 00:03:06.640
And so now we move from four,

60
00:03:06.640 --> 00:03:11.540
to three and three of course still is greater equals zero,

61
00:03:11.540 --> 00:03:13.700
then all the way to zero.

62
00:03:13.700 --> 00:03:17.890
And so, zero is still greater equals zero.

63
00:03:17.890 --> 00:03:20.320
Then the counter gets updated again,

64
00:03:20.320 --> 00:03:22.930
and it will be updated to minus one.

65
00:03:22.930 --> 00:03:27.230
And now minus one is not greater or equal zero.

66
00:03:27.230 --> 00:03:32.230
So this is false and so the loop will stop, okay.

67
00:03:32.920 --> 00:03:35.730
So, I hope that this was not hard,

68
00:03:35.730 --> 00:03:38.120
really all we have to do is to think

69
00:03:38.120 --> 00:03:42.210
when we create these three parts here of the four loop

70
00:03:42.210 --> 00:03:46.360
and I hope that you could follow my train of thought here.

71
00:03:46.360 --> 00:03:48.930
Now, anyway the rest of course is gonna work

72
00:03:48.930 --> 00:03:50.313
just exactly the same.

73
00:03:54.500 --> 00:03:57.023
So, we're getting again, the current element.

74
00:03:58.120 --> 00:04:01.130
So, let's check that very quickly

75
00:04:01.130 --> 00:04:04.640
and yes, great job it works.

76
00:04:04.640 --> 00:04:06.940
And just to really show it,

77
00:04:06.940 --> 00:04:10.790
let's also look the counter variable itself.

78
00:04:10.790 --> 00:04:15.790
So first the i sort of counter and then the array value.

79
00:04:16.730 --> 00:04:19.910
And so, indeed this works just as we intend it

80
00:04:19.910 --> 00:04:24.280
we start with number four just as we have it here,

81
00:04:24.280 --> 00:04:28.200
and then we move to three, two, one, zero.

82
00:04:28.200 --> 00:04:30.230
And if we now edit one element

83
00:04:30.230 --> 00:04:35.030
then for sure this is gonna work just the same

84
00:04:35.030 --> 00:04:39.680
because now Jonah's length is six and minus one is five

85
00:04:39.680 --> 00:04:42.263
and so it will start here at true,

86
00:04:43.920 --> 00:04:45.763
and indeed it does.

87
00:04:47.470 --> 00:04:49.400
All right, now you will probably

88
00:04:49.400 --> 00:04:51.400
not be doing this all the time

89
00:04:51.400 --> 00:04:52.730
in your own code,

90
00:04:52.730 --> 00:04:55.180
but I thought that this was a nice exercise.

91
00:04:55.180 --> 00:04:59.120
So we could again think about how to define the counter,

92
00:04:59.120 --> 00:05:02.253
the condition and the counter update.

93
00:05:04.580 --> 00:05:08.340
Okay, so that was the first part of this lecture.

94
00:05:08.340 --> 00:05:11.460
And now, I want to show you how we can create a loop

95
00:05:11.460 --> 00:05:13.810
inside of a loop.

96
00:05:13.810 --> 00:05:16.210
So, does that sound crazy?

97
00:05:16.210 --> 00:05:18.310
Well, it's not so crazy

98
00:05:19.360 --> 00:05:22.010
and it's not so difficult either.

99
00:05:22.010 --> 00:05:23.780
And to do this, let's go back

100
00:05:23.780 --> 00:05:27.690
to our gym example from the first loop lecture.

101
00:05:27.690 --> 00:05:29.840
So there, we had 10 repetitions

102
00:05:29.840 --> 00:05:33.720
for a certain weightlifting exercise, remember?

103
00:05:33.720 --> 00:05:37.870
But now let's say that we have three different exercises

104
00:05:37.870 --> 00:05:41.400
and we want to repeat each of them five times.

105
00:05:41.400 --> 00:05:42.620
So that means a total

106
00:05:42.620 --> 00:05:47.620
of 15 repetitions five for each of the three exercises.

107
00:05:47.820 --> 00:05:50.140
So to lock all these exercises,

108
00:05:50.140 --> 00:05:53.820
we will need a loop inside a loop.

109
00:05:53.820 --> 00:05:57.970
So, let's roll up our sleeves and get to work here.

110
00:05:57.970 --> 00:06:00.903
And we're gonna start with the three exercises.

111
00:06:02.600 --> 00:06:04.720
So let's create a counter,

112
00:06:04.720 --> 00:06:06.823
and I will actually call it exercise.

113
00:06:08.270 --> 00:06:13.080
So exercise and we start at one now this time again

114
00:06:13.080 --> 00:06:18.080
because we simply want to log exercise one, two and three.

115
00:06:18.530 --> 00:06:23.450
So our condition here is that the exercise should be less

116
00:06:23.450 --> 00:06:25.940
or equal three.

117
00:06:25.940 --> 00:06:28.420
And actually this would be exactly the same

118
00:06:28.420 --> 00:06:31.513
as writing exercise below four.

119
00:06:32.360 --> 00:06:34.860
So you can do whatever you prefer most,

120
00:06:34.860 --> 00:06:38.103
and I think I will actually stick with this one this time.

121
00:06:40.460 --> 00:06:44.310
And then we need to increase the exercise

122
00:06:44.310 --> 00:06:46.743
after each iteration as always.

123
00:06:49.380 --> 00:06:51.640
So now, let's look to the console

124
00:06:51.640 --> 00:06:54.323
something like this starting exercise,

125
00:06:58.590 --> 00:07:02.210
and actually here we want to include the exercise number.

126
00:07:02.210 --> 00:07:05.563
So that's instead created template literal.

127
00:07:09.290 --> 00:07:11.813
And so, here we use that counter variable.

128
00:07:14.950 --> 00:07:16.663
So, let's just check this one.

129
00:07:17.970 --> 00:07:20.200
So we have three exercises

130
00:07:20.200 --> 00:07:23.360
but we don't have any repetitions yet in there.

131
00:07:23.360 --> 00:07:24.910
And so now again,

132
00:07:24.910 --> 00:07:27.540
we need to create a loop inside a loop,

133
00:07:27.540 --> 00:07:29.767
so that in each exercise we can have

134
00:07:29.767 --> 00:07:32.390
the five repetitions that we want

135
00:07:32.390 --> 00:07:36.380
and the repetitions themselves are a loop, right?

136
00:07:36.380 --> 00:07:38.660
And so that's why we now need that loop

137
00:07:38.660 --> 00:07:41.903
inside of this loop, so let's do that.

138
00:07:43.190 --> 00:07:45.320
And this is gonna be basically the same

139
00:07:45.320 --> 00:07:46.973
as we did earlier.

140
00:07:47.990 --> 00:07:51.670
So, let's again call it a rep, start at one

141
00:07:51.670 --> 00:07:52.993
and 10 the condition.

142
00:07:53.930 --> 00:07:55.840
So, remember how I said,

143
00:07:55.840 --> 00:07:58.930
that we want five repetitions this time.

144
00:07:58.930 --> 00:08:02.520
And so, let's say we want to stay below six.

145
00:08:02.520 --> 00:08:06.130
So again, that would be exactly the same as writing less

146
00:08:06.130 --> 00:08:11.130
or equal five, but let's keep it a bit different this time

147
00:08:11.530 --> 00:08:14.400
and say below six.

148
00:08:14.400 --> 00:08:17.103
And then rep plus plus,

149
00:08:22.650 --> 00:08:26.773
and now lifting weights repetition,

150
00:08:30.580 --> 00:08:34.113
and again I forgot to make this a template literal.

151
00:08:35.790 --> 00:08:40.680
So yes,

152
00:08:40.680 --> 00:08:43.240
this should work much better.

153
00:08:43.240 --> 00:08:46.750
And now, this cute emoji here again.

154
00:08:46.750 --> 00:08:47.763
Oh, where is it?

155
00:08:54.390 --> 00:08:55.913
And let's test this now.

156
00:08:56.790 --> 00:08:59.240
So, what do you expect to see

157
00:08:59.240 --> 00:09:03.320
think about that before you load your own result

158
00:09:03.320 --> 00:09:05.273
or before I load here, the result.

159
00:09:06.580 --> 00:09:10.960
So, is this what you expected?

160
00:09:10.960 --> 00:09:13.060
Lets even increase the Sierra a little bit

161
00:09:15.210 --> 00:09:17.700
and now we see the full picture.

162
00:09:17.700 --> 00:09:21.730
All right, so we start exercise number one,

163
00:09:21.730 --> 00:09:23.370
which is what we have here

164
00:09:23.370 --> 00:09:27.010
and then inside of this iteration of exercise one,

165
00:09:27.010 --> 00:09:30.210
a new loop is created and executed.

166
00:09:30.210 --> 00:09:32.710
And so that's what then creates

167
00:09:32.710 --> 00:09:37.060
this lifting weights repetition from one to five,

168
00:09:37.060 --> 00:09:41.350
all right, then this loop here is finished, right?

169
00:09:41.350 --> 00:09:43.240
So it run all the five time

170
00:09:43.240 --> 00:09:46.130
that then this first iteration is finished.

171
00:09:46.130 --> 00:09:48.790
And so, the exercise loop,

172
00:09:48.790 --> 00:09:52.590
so this outer loop here goes to its second iteration.

173
00:09:52.590 --> 00:09:55.170
And so, we are at exercise number two

174
00:09:56.920 --> 00:10:00.070
and then this whole loop here will run again

175
00:10:00.070 --> 00:10:02.100
from one to five,

176
00:10:02.100 --> 00:10:04.859
so that's this five here,

177
00:10:04.859 --> 00:10:06.550
and then that loop again finishes.

178
00:10:06.550 --> 00:10:10.770
And then the exercise iteration finishes

179
00:10:10.770 --> 00:10:13.330
and we go to iteration number three.

180
00:10:13.330 --> 00:10:15.700
So exercises now, number three

181
00:10:15.700 --> 00:10:18.090
and turn the whole repetition loop.

182
00:10:18.090 --> 00:10:22.330
So, this inner loop here we'll run five times again.

183
00:10:22.330 --> 00:10:23.660
And with that we end up

184
00:10:23.660 --> 00:10:27.870
with a total of basically 15 repetitions

185
00:10:27.870 --> 00:10:29.760
just as I said in the beginning.

186
00:10:29.760 --> 00:10:34.670
So, three times five, okay.

187
00:10:34.670 --> 00:10:38.890
And we could even include the number of the current exercise

188
00:10:38.890 --> 00:10:41.333
in this string that we're printing here.

189
00:10:43.100 --> 00:10:46.000
So that stood out as well, exercise

190
00:10:49.020 --> 00:10:51.620
and then exercise.

191
00:10:51.620 --> 00:10:55.870
So this is the variable that we get from the outer loop.

192
00:10:55.870 --> 00:11:00.870
And so this variable here is of course available insight,

193
00:11:01.440 --> 00:11:02.970
this whole loop.

194
00:11:02.970 --> 00:11:05.540
And that does include all the inner code

195
00:11:05.540 --> 00:11:08.240
even this inner loop.

196
00:11:08.240 --> 00:11:12.030
And so that's why we can access this variable here as well.

197
00:11:12.030 --> 00:11:15.200
And so now we should see exercise one printed

198
00:11:15.200 --> 00:11:16.430
for these five,

199
00:11:16.430 --> 00:11:19.360
then exercise to printed for these five

200
00:11:19.360 --> 00:11:22.963
and exercise three for the last ones.

201
00:11:23.940 --> 00:11:26.313
And yeah, beautiful.

202
00:11:27.930 --> 00:11:32.450
All right, I think this was a very fun exercise.

203
00:11:32.450 --> 00:11:35.670
And again, even though you might not use this all the time

204
00:11:35.670 --> 00:11:39.930
in the real world I still think that this was a pretty cool

205
00:11:39.930 --> 00:11:43.970
example to show you some more power of loops.

206
00:11:43.970 --> 00:11:45.790
And now to wrap up this section,

207
00:11:45.790 --> 00:11:49.340
all there is left to learn is another type of loop,

208
00:11:49.340 --> 00:11:50.863
which is the wild loop.

