WEBVTT

1
00:00:01.275 --> 00:00:03.150
<v ->In this video, you're gonna learn</v>

2
00:00:03.150 --> 00:00:05.790
how to retrieve data from objects

3
00:00:05.790 --> 00:00:08.350
and also how to change data in objects,

4
00:00:08.350 --> 00:00:11.513
using both the dot and the bracket notation.

5
00:00:13.400 --> 00:00:16.360
So let's actually get the object here

6
00:00:16.360 --> 00:00:18.510
from the previous lecture,

7
00:00:18.510 --> 00:00:20.750
so that Jonas object.

8
00:00:20.750 --> 00:00:22.380
And I noticed that we actually

9
00:00:22.380 --> 00:00:25.853
didn't even take a look at it and a console,

10
00:00:27.060 --> 00:00:28.533
so let's quickly log it,

11
00:00:29.390 --> 00:00:33.390
but we're actually not gonna see a big surprise.

12
00:00:33.390 --> 00:00:37.080
So all it shows us it's really the same object

13
00:00:37.080 --> 00:00:38.823
that we just wrote in code.

14
00:00:39.940 --> 00:00:41.420
So it looks like this.

15
00:00:41.420 --> 00:00:45.210
So essentially just as it is here in the code,

16
00:00:45.210 --> 00:00:48.760
the only thing that's different is that the properties here

17
00:00:48.760 --> 00:00:50.900
are ordered alphabetically.

18
00:00:50.900 --> 00:00:53.750
And so that's what I mean when I said in the last lecture

19
00:00:53.750 --> 00:00:57.120
that the order of properties does not matter.

20
00:00:57.120 --> 00:00:59.600
And that's because we simply get the properties

21
00:00:59.600 --> 00:01:03.510
from the object using the property name itself.

22
00:01:03.510 --> 00:01:06.180
So that's actually the topic of this video.

23
00:01:06.180 --> 00:01:09.660
And so let me show you the two ways in which we do that.

24
00:01:09.660 --> 00:01:13.440
So the first way of getting a property from an object

25
00:01:13.440 --> 00:01:15.690
is by using the dot notation

26
00:01:15.690 --> 00:01:18.073
and that is very straight forward.

27
00:01:19.310 --> 00:01:21.203
So let's log that to console.

28
00:01:22.110 --> 00:01:25.110
And so let's say that we want to get the last name.

29
00:01:25.110 --> 00:01:27.180
So all we have to do is to write

30
00:01:27.180 --> 00:01:32.180
Jonas dot last name and that's it

31
00:01:35.320 --> 00:01:38.440
you see here is my last name

32
00:01:38.440 --> 00:01:41.730
coming straight from the Jonas object

33
00:01:41.730 --> 00:01:45.030
so Jonas dot last name.

34
00:01:45.030 --> 00:01:48.000
And this dot here is actually an operator

35
00:01:48.000 --> 00:01:50.360
which will go to this object

36
00:01:50.360 --> 00:01:52.190
and then retrieve to property

37
00:01:52.190 --> 00:01:55.060
with the name that we specified here.

38
00:01:55.060 --> 00:01:57.380
Now we can do the exact same thing

39
00:01:57.380 --> 00:02:00.260
using the brackets notation.

40
00:02:00.260 --> 00:02:03.720
So let me show that as well.

41
00:02:03.720 --> 00:02:07.450
So Jonas, and then we use brackets in a similar way

42
00:02:07.450 --> 00:02:10.240
in which we retrieve data from an array,

43
00:02:10.240 --> 00:02:14.270
but here we need to specify a string with the property name.

44
00:02:14.270 --> 00:02:19.270
So with the key, so let's do my name again,

45
00:02:20.270 --> 00:02:21.820
or actually a last name.

46
00:02:21.820 --> 00:02:25.490
And so these results should be exactly the same here.

47
00:02:25.490 --> 00:02:28.240
Now, the big difference between these two here

48
00:02:28.240 --> 00:02:31.330
is that in the bracket notation here,

49
00:02:31.330 --> 00:02:35.980
we can actually put any expression that we'd like,

50
00:02:35.980 --> 00:02:39.340
so we don't have to explicitly write the string here,

51
00:02:39.340 --> 00:02:42.650
but instead we can compute it from some operation

52
00:02:42.650 --> 00:02:44.590
because remember that an operation

53
00:02:44.590 --> 00:02:46.540
is basically an expression.

54
00:02:46.540 --> 00:02:48.890
So something that produces a value

55
00:02:48.890 --> 00:02:52.800
and so we can put that here, inside the brackets.

56
00:02:52.800 --> 00:02:55.340
So let's actually try that and imagine

57
00:02:55.340 --> 00:02:59.490
that we had a variable in which we store the repeating part

58
00:02:59.490 --> 00:03:02.330
in first name and last name.

59
00:03:02.330 --> 00:03:05.210
So we have name here in both

60
00:03:05.210 --> 00:03:09.800
and so let's store just that inside of a variable.

61
00:03:09.800 --> 00:03:12.150
And you will see my point here in a second

62
00:03:12.150 --> 00:03:13.913
this will all make sense, trust me.

63
00:03:15.310 --> 00:03:19.230
So name key, and then just name.

64
00:03:19.230 --> 00:03:21.300
So again, that's the repeating part

65
00:03:21.300 --> 00:03:25.320
in these two property names.

66
00:03:25.320 --> 00:03:27.240
And now we can use that variable

67
00:03:27.240 --> 00:03:29.943
to get both the first and the last name.

68
00:03:31.140 --> 00:03:36.140
So console dot log and then Jonas records.

69
00:03:37.220 --> 00:03:40.400
And so now here we can insert the expression.

70
00:03:40.400 --> 00:03:43.670
So let's create a string first

71
00:03:43.670 --> 00:03:47.513
and concatenate it with name key.

72
00:03:48.400 --> 00:03:50.940
And here we could have built this string

73
00:03:50.940 --> 00:03:52.720
using a template literal,

74
00:03:52.720 --> 00:03:55.163
but in this case it's not really necessary.

75
00:03:56.190 --> 00:04:01.140
So let's just copy this and then also last.

76
00:04:01.140 --> 00:04:02.690
So what will happen here

77
00:04:02.690 --> 00:04:05.900
is that as JavaScript sees this line of code,

78
00:04:05.900 --> 00:04:09.490
it will start by executing this plus operation

79
00:04:09.490 --> 00:04:12.270
and so it will create a string first name.

80
00:04:12.270 --> 00:04:15.080
And then it will go to the Jonas object

81
00:04:15.080 --> 00:04:17.060
and retrieve that property

82
00:04:17.060 --> 00:04:19.080
at the same for the last name

83
00:04:19.080 --> 00:04:22.290
here and the second line of code.

84
00:04:22.290 --> 00:04:26.190
And so that's how we get Jonas and Schmedtman.

85
00:04:26.190 --> 00:04:28.940
And doing something like this is more common

86
00:04:28.940 --> 00:04:30.480
than you might think

87
00:04:30.480 --> 00:04:34.010
and so that's why it's important that we understand

88
00:04:34.010 --> 00:04:35.580
that in the square brackets,

89
00:04:35.580 --> 00:04:38.950
we could put any expression here, okay.

90
00:04:38.950 --> 00:04:41.090
Now the same thing would not work

91
00:04:41.090 --> 00:04:46.090
with the dot operator or the dot notation.

92
00:04:46.620 --> 00:04:51.340
So we cannot write Jonas dot and then this here,

93
00:04:51.340 --> 00:04:54.383
for example, this would not work at all,

94
00:04:58.270 --> 00:05:00.683
so and unexpected string.

95
00:05:01.670 --> 00:05:03.570
And so that's the reason why we need

96
00:05:03.570 --> 00:05:06.330
the brackets notation and dot notation.

97
00:05:06.330 --> 00:05:09.440
We have to use the real final property name

98
00:05:09.440 --> 00:05:12.160
and not a computed property name.

99
00:05:12.160 --> 00:05:14.060
So for example this one,

100
00:05:14.060 --> 00:05:15.630
this one is a real property name

101
00:05:15.630 --> 00:05:18.410
as it appears in the object

102
00:05:18.410 --> 00:05:21.503
and so that's why it works here in this case.

103
00:05:22.610 --> 00:05:26.260
So in what situations should we use the dot notation

104
00:05:26.260 --> 00:05:29.660
and when do we have to use deep brackets notation?

105
00:05:29.660 --> 00:05:32.250
And I kind of already replied to that,

106
00:05:32.250 --> 00:05:34.340
but this is just to recap.

107
00:05:34.340 --> 00:05:37.900
So when we need to first compute the property name,

108
00:05:37.900 --> 00:05:41.710
like we did here with the first and last name,

109
00:05:41.710 --> 00:05:45.020
then of course we have to use the bracket notation

110
00:05:45.020 --> 00:05:47.960
in any other case, just use the dot notation,

111
00:05:47.960 --> 00:05:52.960
which looks a lot cleaner and it's also easier to use, okay.

112
00:05:53.720 --> 00:05:56.470
And now to make the need for the bracket notation

113
00:05:56.470 --> 00:06:00.080
even more clear, let me show you another example,

114
00:06:00.080 --> 00:06:02.700
which I think is gonna be really fun.

115
00:06:02.700 --> 00:06:05.410
So let's say that we don't know yet

116
00:06:05.410 --> 00:06:07.850
which property we want to show,

117
00:06:07.850 --> 00:06:10.510
and instead we get this information

118
00:06:10.510 --> 00:06:12.140
from some user interface

119
00:06:13.300 --> 00:06:17.040
so, for that we can use the prompt function.

120
00:06:17.040 --> 00:06:20.590
Remember, so we can use prompt

121
00:06:20.590 --> 00:06:23.460
and prompt is yet another built in function

122
00:06:23.460 --> 00:06:25.350
that is built into JavaScript

123
00:06:25.350 --> 00:06:28.520
and that we can use in any script.

124
00:06:28.520 --> 00:06:30.260
So here we can write a string

125
00:06:30.260 --> 00:06:32.780
and then this will create a popup window

126
00:06:32.780 --> 00:06:33.970
with an input field.

127
00:06:33.970 --> 00:06:37.950
Remember, so here we can write,

128
00:06:37.950 --> 00:06:42.863
what do you want to know about Jonas?

129
00:06:45.080 --> 00:06:50.080
choose between first name, last name, age, job and friends.

130
00:06:57.730 --> 00:07:00.830
And remember that this function will then return a string

131
00:07:00.830 --> 00:07:05.310
and this string, we just need to store into some variable.

132
00:07:05.310 --> 00:07:10.310
So let's call this one 'interested in', alright.

133
00:07:12.810 --> 00:07:17.530
And to start, let's just log this 'interested in' value

134
00:07:17.530 --> 00:07:19.040
to the console here,

135
00:07:19.040 --> 00:07:21.123
just till we see that it actually works.

136
00:07:22.490 --> 00:07:23.960
And so here is the popup

137
00:07:24.820 --> 00:07:29.070
and so now we just write one of these options here.

138
00:07:29.070 --> 00:07:30.363
So let's say job,

139
00:07:32.290 --> 00:07:34.900
and indeed now here we get job.

140
00:07:34.900 --> 00:07:36.150
And so what we want to do now

141
00:07:36.150 --> 00:07:39.330
is to basically display the job here in the console,

142
00:07:39.330 --> 00:07:41.373
because that's what the user chose.

143
00:07:42.290 --> 00:07:44.980
So how will we do that?

144
00:07:44.980 --> 00:07:46.943
Can we use the dot notation?

145
00:07:47.900 --> 00:07:51.610
So basically, can we do this?

146
00:07:51.610 --> 00:07:54.230
Jonas dot interested in,

147
00:07:54.230 --> 00:07:56.150
well, let's find out,

148
00:07:56.150 --> 00:07:58.593
but I hope that you can guess.

149
00:08:00.080 --> 00:08:02.420
And so we get undefined

150
00:08:02.420 --> 00:08:03.830
and this is something new

151
00:08:03.830 --> 00:08:05.650
that I didn't explain yet.

152
00:08:05.650 --> 00:08:09.240
And so let me tell you now that undefined is what we get

153
00:08:09.240 --> 00:08:11.220
when we try to access a property

154
00:08:11.220 --> 00:08:14.090
on an object that does not exist.

155
00:08:14.090 --> 00:08:16.920
So Jonas does not have a property

156
00:08:16.920 --> 00:08:20.160
called 'interested in', right?

157
00:08:20.160 --> 00:08:22.250
And so therefore the result

158
00:08:22.250 --> 00:08:26.663
of trying to access 'interested in' on Jonas is undefined.

159
00:08:27.510 --> 00:08:29.090
Now, what we need to do here

160
00:08:29.090 --> 00:08:33.520
is instead of the dot notation, use the brackets notation,

161
00:08:33.520 --> 00:08:36.520
because then we can put any expression here,

162
00:08:36.520 --> 00:08:39.380
which in this case will be interested in.

163
00:08:39.380 --> 00:08:41.810
And so JavaScript will now come here

164
00:08:41.810 --> 00:08:43.600
and replace 'interested in'

165
00:08:43.600 --> 00:08:45.940
with the actual value of the variable

166
00:08:45.940 --> 00:08:47.393
and then that's the one

167
00:08:47.393 --> 00:08:50.343
that will be looked up on the Jonas object.

168
00:08:51.240 --> 00:08:52.510
So let's try that again

169
00:08:53.690 --> 00:08:58.637
and now when I say job, we get a correct result, great.

170
00:08:59.830 --> 00:09:02.090
And I hope that you did understand

171
00:09:02.090 --> 00:09:05.160
the big difference between using the dot notation

172
00:09:05.160 --> 00:09:06.980
and the bracket notation

173
00:09:06.980 --> 00:09:11.140
and why the bracket notation gave us the correct result.

174
00:09:11.140 --> 00:09:14.130
So again, it's because basically this expression

175
00:09:14.130 --> 00:09:18.220
that we put here between these brackets will get evaluated

176
00:09:18.220 --> 00:09:20.623
then this one here is job.

177
00:09:21.780 --> 00:09:24.630
Now, of course, we can also pass in something else.

178
00:09:24.630 --> 00:09:27.190
So something that is not here, for example,

179
00:09:27.190 --> 00:09:30.410
let's try to access the location

180
00:09:30.410 --> 00:09:32.550
and then again, we get undefined.

181
00:09:32.550 --> 00:09:34.980
And once more, that is because

182
00:09:34.980 --> 00:09:39.490
there is not a property called location on the object.

183
00:09:39.490 --> 00:09:41.060
So let's actually handle that

184
00:09:41.060 --> 00:09:43.560
using some knowledge that we already have.

185
00:09:43.560 --> 00:09:48.310
So we know that undefined is a false value, right?

186
00:09:48.310 --> 00:09:50.499
And so we can use that to our advantage now

187
00:09:50.499 --> 00:09:54.610
and create some logic that we'll print a custom string

188
00:09:54.610 --> 00:09:56.290
whenever the user tries to access

189
00:09:56.290 --> 00:09:58.283
a property that doesn't exist.

190
00:09:59.210 --> 00:10:02.473
So let's do that.

191
00:10:03.490 --> 00:10:08.490
And we can say, if Jonas, brackets, 'interested in',

192
00:10:10.350 --> 00:10:13.500
then log that to the console.

193
00:10:13.500 --> 00:10:14.920
So basically this,

194
00:10:14.920 --> 00:10:17.020
and again, I'm using now the option

195
00:10:17.020 --> 00:10:20.053
and arrow down to move this line.

196
00:10:21.070 --> 00:10:23.400
And so if this value exists,

197
00:10:23.400 --> 00:10:27.080
then it is a truth value because it is not undefined

198
00:10:27.080 --> 00:10:29.420
and so any string that is not empty

199
00:10:29.420 --> 00:10:31.500
or any number that is not zero

200
00:10:31.500 --> 00:10:35.530
will then trigger this code block here to be executed.

201
00:10:35.530 --> 00:10:38.920
Now, if one of these properties was actually empty or zero,

202
00:10:38.920 --> 00:10:41.030
we would then go to the else block,

203
00:10:41.030 --> 00:10:44.510
but let's not account for that here in this case,

204
00:10:44.510 --> 00:10:47.203
let's say that doesn't happen, all right.

205
00:10:50.750 --> 00:10:53.230
So in case that the value does not exist

206
00:10:53.230 --> 00:10:55.550
So for example, with location,

207
00:10:55.550 --> 00:10:57.290
we then get undefined

208
00:10:57.290 --> 00:10:58.583
and so in this case,

209
00:11:00.300 --> 00:11:04.000
Jonas 'interested in' is undefined, which is false

210
00:11:04.000 --> 00:11:07.990
and therefore we would go to the else block.

211
00:11:07.990 --> 00:11:12.990
And so let's say something like wrong request,

212
00:11:14.120 --> 00:11:17.820
and then we can repeat this sentence here.

213
00:11:21.320 --> 00:11:22.943
So let's try that again here.

214
00:11:24.820 --> 00:11:29.000
So location, and now we get wrong request,

215
00:11:29.000 --> 00:11:31.053
but if we try something that exists,

216
00:11:32.460 --> 00:11:35.720
then we get that result, great.

217
00:11:35.720 --> 00:11:40.310
So I think this was a fun little experiment here

218
00:11:40.310 --> 00:11:43.113
and now I hope you like that.

219
00:11:44.040 --> 00:11:45.310
And now that you know

220
00:11:45.310 --> 00:11:48.300
how to retrieve elements from an object,

221
00:11:48.300 --> 00:11:51.260
let's also learn how to use both the dots

222
00:11:51.260 --> 00:11:52.960
and the brackets notation

223
00:11:52.960 --> 00:11:55.563
to add new properties to the object.

224
00:11:56.410 --> 00:11:59.073
And so that's pretty straight forward.

225
00:12:00.180 --> 00:12:02.410
So all we have to do is Jonas dot

226
00:12:03.350 --> 00:12:05.310
and now let's actually use location

227
00:12:06.550 --> 00:12:08.630
and set it equal to something.

228
00:12:08.630 --> 00:12:10.003
So to some value.

229
00:12:11.010 --> 00:12:13.600
So I'm located in Portugal

230
00:12:13.600 --> 00:12:16.140
and so that's how we use the dot notation.

231
00:12:16.140 --> 00:12:18.620
And then we can also of course use

232
00:12:18.620 --> 00:12:20.663
the brackets notation just the same.

233
00:12:21.540 --> 00:12:24.563
So let's say my Twitter handle here,

234
00:12:26.110 --> 00:12:29.500
which is @Jonasschmedtman with just one N

235
00:12:32.610 --> 00:12:34.863
and you should definitely check that out.

236
00:12:36.280 --> 00:12:38.950
And now just to see that it worked,

237
00:12:38.950 --> 00:12:42.330
let's log it to the console one final time

238
00:12:44.770 --> 00:12:49.770
and okay, it's asking us for the field name again,

239
00:12:53.480 --> 00:12:56.020
but anyway, now we have the location

240
00:12:56.020 --> 00:12:58.673
and the Twitter here as well in the object.

241
00:12:59.570 --> 00:13:00.900
And of course here

242
00:13:00.900 --> 00:13:04.320
we could put any expression just like before.

243
00:13:04.320 --> 00:13:09.160
So it works in the exact same way, alright.

244
00:13:09.160 --> 00:13:13.000
And that's how we use the brackets and the dot notation.

245
00:13:13.000 --> 00:13:16.230
Now, finally, I have one small challenge for you

246
00:13:16.230 --> 00:13:18.040
that you can just do right now

247
00:13:18.040 --> 00:13:20.320
here at the end of this video.

248
00:13:20.320 --> 00:13:23.450
And so what I want you to do is to write a sentence

249
00:13:23.450 --> 00:13:25.910
like this one, that I'm going to show you now,

250
00:13:25.910 --> 00:13:28.190
but in a dynamic way.

251
00:13:28.190 --> 00:13:31.223
So let's just write challenge here.

252
00:13:33.390 --> 00:13:38.387
And so I want you to write 'Jonas has three friends

253
00:13:40.440 --> 00:13:45.123
and his best friend is called Michael'.

254
00:13:47.340 --> 00:13:52.090
So here, we suppose that the first friend in the array,

255
00:13:52.090 --> 00:13:56.640
so in the friends array is the best friend, okay.

256
00:13:56.640 --> 00:14:00.070
And for the record, I do have more than three friends,

257
00:14:00.070 --> 00:14:02.963
but of course, here, we need to keep it all very simple.

258
00:14:03.800 --> 00:14:06.720
So again, I want you to write this sentence,

259
00:14:06.720 --> 00:14:10.550
but without hard coding, any of these values.

260
00:14:10.550 --> 00:14:12.810
So what you need to get from the object

261
00:14:12.810 --> 00:14:17.810
is this value, this value and this value.

262
00:14:18.020 --> 00:14:21.400
And this is actually a bit hard, I would say.

263
00:14:21.400 --> 00:14:24.950
And so there's absolutely no need for you to nail this,

264
00:14:24.950 --> 00:14:26.700
but you can still try it

265
00:14:26.700 --> 00:14:29.250
and maybe you can do some of the parts.

266
00:14:29.250 --> 00:14:32.170
One hint that I can give you is that you will need to use

267
00:14:32.170 --> 00:14:36.100
multiple dots to get the number of friends, okay.

268
00:14:36.100 --> 00:14:38.450
So that's totally possible.

269
00:14:38.450 --> 00:14:41.970
And so take like five minutes to try this out now.

270
00:14:41.970 --> 00:14:44.973
So pause the video and I'll see you in a second.

271
00:14:46.900 --> 00:14:48.060
All right.

272
00:14:48.060 --> 00:14:50.903
And so this is how we would do this.

273
00:14:52.090 --> 00:14:55.120
So we want to lock this to the console, of course.

274
00:14:55.120 --> 00:14:58.230
And so we're starting with the name

275
00:14:58.230 --> 00:15:02.390
and this one is probably the most straightforward one.

276
00:15:02.390 --> 00:15:07.390
So that's just, Jonas dot first name.

277
00:15:08.000 --> 00:15:10.360
So that is where the name is stored

278
00:15:10.360 --> 00:15:14.300
then has, and then the number of friends.

279
00:15:14.300 --> 00:15:18.800
So the friends are stored in Jonas dot friends.

280
00:15:18.800 --> 00:15:20.920
Now, do you remember how to get

281
00:15:20.920 --> 00:15:23.660
the number of elements in an array?

282
00:15:23.660 --> 00:15:27.530
It is by writing the array dot length, right?

283
00:15:27.530 --> 00:15:28.743
And so let's do that.

284
00:15:30.650 --> 00:15:35.110
So Jonas dot friends.

285
00:15:35.110 --> 00:15:38.500
And so this is our array, right?

286
00:15:38.500 --> 00:15:42.263
And so on this array, we can now ask for the length.

287
00:15:43.420 --> 00:15:46.700
And so basically you can see here that length

288
00:15:46.700 --> 00:15:50.960
is also a property that is available on all race.

289
00:15:50.960 --> 00:15:53.610
So it's a property that we don't define ourselves,

290
00:15:53.610 --> 00:15:55.610
but it's automatically available.

291
00:15:55.610 --> 00:15:58.160
But now that you know about the dot notation,

292
00:15:58.160 --> 00:16:01.850
you can also start to understand that the dot length

293
00:16:01.850 --> 00:16:06.100
is just a property that is available on all a race.

294
00:16:06.100 --> 00:16:08.070
And so that's what we're doing here.

295
00:16:08.070 --> 00:16:11.870
So again, we have an array which is this one,

296
00:16:11.870 --> 00:16:15.403
and on there, we can simply then request dot length.

297
00:16:17.530 --> 00:16:20.170
Okay, let's continue the sentence now.

298
00:16:20.170 --> 00:16:25.170
And his best friend is called

299
00:16:27.390 --> 00:16:29.570
and now we need to simply get

300
00:16:29.570 --> 00:16:31.363
the first element from the array.

301
00:16:32.362 --> 00:16:36.130
And so that's again, Jonas dot friends

302
00:16:36.130 --> 00:16:38.800
and now remember, we get the first element

303
00:16:38.800 --> 00:16:43.800
of an array using square brackets zero, and that's it.

304
00:16:44.580 --> 00:16:47.700
So once more, this here is simply an array

305
00:16:47.700 --> 00:16:50.960
and so we learned that to take the first element

306
00:16:50.960 --> 00:16:54.230
we just use square brackets with zero.

307
00:16:54.230 --> 00:16:55.950
So in a sense on the race,

308
00:16:55.950 --> 00:16:57.883
we also have the brackets notation.

309
00:17:00.100 --> 00:17:02.743
Okay, so that's just test this,

310
00:17:03.870 --> 00:17:06.560
and again, this annoying popup,

311
00:17:06.560 --> 00:17:09.160
but indeed Jonas has three

312
00:17:09.160 --> 00:17:11.410
and we're just missing the friends here.

313
00:17:11.410 --> 00:17:16.410
So friends and his best friend is called Michael.

314
00:17:17.610 --> 00:17:21.670
So just what I had written here as a template.

315
00:17:21.670 --> 00:17:24.360
Now, in terms of operator proceedings,

316
00:17:24.360 --> 00:17:27.653
let's quickly check out why it actually works this way.

317
00:17:28.550 --> 00:17:29.943
So with the dots here.

318
00:17:31.080 --> 00:17:32.770
Because remember, as I said,

319
00:17:32.770 --> 00:17:36.510
the dot operator here is really just that

320
00:17:36.510 --> 00:17:39.513
it's just an operator and the same goes for the brackets.

321
00:17:40.440 --> 00:17:45.260
So I will, again, Google MDN operator proceedings,

322
00:17:45.260 --> 00:17:46.370
but the link to this table

323
00:17:46.370 --> 00:17:50.760
is also on the resources pages on my website.

324
00:17:50.760 --> 00:17:51.970
And the link to that one

325
00:17:51.970 --> 00:17:56.950
is right in the first text lecture of the course.

326
00:17:56.950 --> 00:18:01.420
But anyway, here we have date dot notation,

327
00:18:01.420 --> 00:18:03.790
which here is called member access

328
00:18:03.790 --> 00:18:06.300
and then we have the brackets notation,

329
00:18:06.300 --> 00:18:09.600
which is here called computed member access.

330
00:18:09.600 --> 00:18:10.520
And so the computed,

331
00:18:10.520 --> 00:18:13.800
is because as I mentioned multiple times now,

332
00:18:13.800 --> 00:18:16.073
because we can compute the property names

333
00:18:16.073 --> 00:18:18.090
that we want to access.

334
00:18:18.090 --> 00:18:21.280
Now, what matters here is that they both have a really high

335
00:18:21.280 --> 00:18:25.140
priority and both are left to right.

336
00:18:25.140 --> 00:18:26.940
And so that's why all of this works.

337
00:18:27.830 --> 00:18:30.720
So we have two dots here

338
00:18:30.720 --> 00:18:33.310
so Jonas dot friends dot length

339
00:18:33.310 --> 00:18:35.570
and they are executed left to right.

340
00:18:35.570 --> 00:18:37.030
And therefore the first thing

341
00:18:37.030 --> 00:18:40.710
that JavaScript does is Jonas dot friends.

342
00:18:40.710 --> 00:18:41.920
And so essentially,

343
00:18:41.920 --> 00:18:45.780
this will then be replaced with the array

344
00:18:45.780 --> 00:18:47.380
and then on that array

345
00:18:47.380 --> 00:18:52.260
is where the dot length is then applied

346
00:18:52.260 --> 00:18:53.170
and the same thing here.

347
00:18:53.170 --> 00:18:55.670
So first Jonas dot friends is done.

348
00:18:55.670 --> 00:18:58.990
And then this one is also left to right

349
00:18:58.990 --> 00:19:02.523
and so from there we take element number zero, okay.

350
00:19:04.440 --> 00:19:07.060
So there's no magic involved here

351
00:19:07.060 --> 00:19:11.630
there is rules for everything and everything makes sense.

352
00:19:11.630 --> 00:19:13.960
And again, you don't need to memorize this here,

353
00:19:13.960 --> 00:19:18.763
with time all of this will become second nature to you.

