Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
1
00:00:01,400 --> 00:00:04,463
So let's continue learning about maps.
2
2
00:00:06,250 --> 00:00:09,660
So in the last video we created an empty map
3
3
00:00:09,660 --> 00:00:10,900
and then edit elements
4
4
00:00:10,900 --> 00:00:13,670
to it by using the set method.
5
5
00:00:13,670 --> 00:00:15,610
Remember, however,
6
6
00:00:15,610 --> 00:00:19,640
there is actually another way of populating a new map
7
7
00:00:19,640 --> 00:00:22,560
without having to use the set method.
8
8
00:00:22,560 --> 00:00:25,760
And I prefer that because the set method
9
9
00:00:25,760 --> 00:00:28,570
is a bit cumbersome when there are a lot
10
10
00:00:28,570 --> 00:00:30,180
of values to set.
11
11
00:00:30,180 --> 00:00:33,493
So instead we can create a new map like this.
12
12
00:00:34,930 --> 00:00:37,320
So I'm going to call this one question,
13
13
00:00:37,320 --> 00:00:39,430
because now we're implementing
14
14
00:00:39,430 --> 00:00:41,550
something like a quiz.
15
15
00:00:41,550 --> 00:00:43,143
So in a very simple way,
16
16
00:00:45,000 --> 00:00:46,470
so a new map,
17
17
00:00:46,470 --> 00:00:49,740
and then here we can pass in an array
18
18
00:00:49,740 --> 00:00:52,960
and disarray itself will contain multiple arrays.
19
19
00:00:52,960 --> 00:00:54,660
And in each of these arrays,
20
20
00:00:54,660 --> 00:00:57,060
the first position is gonna be the key.
21
21
00:00:57,060 --> 00:01:00,740
And the second position is gonna be the value.
22
22
00:01:00,740 --> 00:01:02,033
So let's do that.
23
23
00:01:03,400 --> 00:01:04,340
So let's say
24
24
00:01:05,360 --> 00:01:07,080
question,
25
25
00:01:07,080 --> 00:01:12,080
and then what is the best programming language
26
26
00:01:13,600 --> 00:01:16,033
in the world?
27
27
00:01:17,970 --> 00:01:20,870
So this is basically the first entry of
28
28
00:01:20,870 --> 00:01:22,073
this question map.
29
29
00:01:23,090 --> 00:01:26,140
So before we would have used the set method
30
30
00:01:26,140 --> 00:01:28,780
and then this as the first argument
31
31
00:01:28,780 --> 00:01:30,510
and this as the second,
32
32
00:01:30,510 --> 00:01:32,980
but now we can simply specify a disarray
33
33
00:01:32,980 --> 00:01:33,813
of arrays
34
34
00:01:34,940 --> 00:01:36,070
in this.
35
35
00:01:36,070 --> 00:01:37,200
wait
36
36
00:01:37,200 --> 00:01:38,280
Now, next up,
37
37
00:01:38,280 --> 00:01:40,720
I want to specify the options
38
38
00:01:40,720 --> 00:01:42,470
for the answer basically.
39
39
00:01:42,470 --> 00:01:45,313
And so I can simply do that by their number.
40
40
00:01:46,370 --> 00:01:48,440
So the first answer is going to be C
41
41
00:01:49,610 --> 00:01:52,230
so C the programming language.
42
42
00:01:52,230 --> 00:01:53,963
The second, will it be Java.
43
43
00:01:57,750 --> 00:02:02,750
And the third will be, of course, what else? Java script,
44
44
00:02:08,420 --> 00:02:12,690
then we need a key for the correct answer.
45
45
00:02:12,690 --> 00:02:15,430
And what do you think the correct answer is?
46
46
00:02:15,430 --> 00:02:17,083
of course, number three.
47
47
00:02:18,150 --> 00:02:21,040
And then we can also have like a success message
48
48
00:02:21,040 --> 00:02:22,990
and an error message.
49
49
00:02:22,990 --> 00:02:23,900
And so let's again,
50
50
00:02:23,900 --> 00:02:27,970
use the Boolean keys, so true,
51
51
00:02:27,970 --> 00:02:30,993
which is basically when the user is correct,
52
52
00:02:32,010 --> 00:02:33,733
then we can say correct.
53
53
00:02:34,750 --> 00:02:37,060
And maybe some kind of emoji here,
54
54
00:02:37,060 --> 00:02:38,133
like this one,
55
55
00:02:40,310 --> 00:02:41,930
but if it's wrong.
56
56
00:02:41,930 --> 00:02:44,310
So if the answer is false,
57
57
00:02:44,310 --> 00:02:45,483
then try again.
58
58
00:02:46,810 --> 00:02:47,673
All right.
59
59
00:02:48,940 --> 00:02:50,140
And so let's take a look
60
60
00:02:54,780 --> 00:02:57,110
and that looks correct.
61
61
00:02:57,110 --> 00:02:58,620
Fantastic.
62
62
00:02:58,620 --> 00:03:02,420
So when creating a new map from scratch,
63
63
00:03:02,420 --> 00:03:03,830
directly in the code,
64
64
00:03:03,830 --> 00:03:06,190
I actually prefer this way
65
65
00:03:06,190 --> 00:03:08,340
of writing it over the way that we did
66
66
00:03:08,340 --> 00:03:10,430
in a previous lecture.
67
67
00:03:10,430 --> 00:03:12,210
But when we keep adding new elements,
68
68
00:03:12,210 --> 00:03:14,760
programmatically using code,
69
69
00:03:14,760 --> 00:03:18,703
then of course the set method is still the way to go.
70
70
00:03:19,670 --> 00:03:21,560
Now, as an aside,
71
71
00:03:21,560 --> 00:03:24,220
does this kind of structure here?
72
72
00:03:24,220 --> 00:03:28,540
So disarray of arrays look kind of similar to you?
73
73
00:03:28,540 --> 00:03:30,710
Well, I hope it does
74
74
00:03:30,710 --> 00:03:33,880
because this is exactly the same array structure
75
75
00:03:33,880 --> 00:03:35,290
that is returned
76
76
00:03:35,290 --> 00:03:39,010
from calling object dot entries.
77
77
00:03:39,010 --> 00:03:40,480
So for example,
78
78
00:03:40,480 --> 00:03:42,403
on the opening hours object.
79
79
00:03:44,090 --> 00:03:46,380
And so you see that they're two,
80
80
00:03:46,380 --> 00:03:49,073
we get an array of arrays where the first element
81
81
00:03:49,073 --> 00:03:51,580
is the key and the second one
82
82
00:03:51,580 --> 00:03:53,380
is the value.
83
83
00:03:53,380 --> 00:03:56,010
And so what this means is that there
84
84
00:03:56,010 --> 00:04:00,133
is an easy way to convert from objects to maps.
85
85
00:04:01,070 --> 00:04:02,911
So let me write that here,
86
86
00:04:02,911 --> 00:04:05,823
actually convert object to map.
87
87
00:04:07,830 --> 00:04:12,420
And so we can say ours map
88
88
00:04:12,420 --> 00:04:13,970
is a new map
89
89
00:04:14,950 --> 00:04:16,420
and then simply
90
90
00:04:16,420 --> 00:04:19,000
with object dot entries
91
91
00:04:20,190 --> 00:04:21,693
of opening hours.
92
92
00:04:22,770 --> 00:04:24,440
Alright, so again,
93
93
00:04:24,440 --> 00:04:28,660
because this structure that results from object dot entries
94
94
00:04:28,660 --> 00:04:31,680
is exactly the same as this.
95
95
00:04:31,680 --> 00:04:33,473
So an array of arrays.
96
96
00:04:38,530 --> 00:04:41,880
So indeed, now we have a map here
97
97
00:04:43,680 --> 00:04:46,560
and so keep this small trick here in mind,
98
98
00:04:46,560 --> 00:04:47,980
whenever you need a map,
99
99
00:04:47,980 --> 00:04:49,783
when you already have an object.
100
100
00:04:50,640 --> 00:04:53,590
Next up, let's talk about iteration
101
101
00:04:53,590 --> 00:04:54,970
and iteration is possible
102
102
00:04:54,970 --> 00:04:57,670
on maps because as we already know,
103
103
00:04:57,670 --> 00:04:59,830
maps are also iterables.
104
104
00:04:59,830 --> 00:05:01,100
And so the for loop
105
105
00:05:01,100 --> 00:05:03,780
is also available for them.
106
106
00:05:03,780 --> 00:05:05,940
And so let's use a for loop actually
107
107
00:05:05,940 --> 00:05:07,930
to now print,
108
108
00:05:07,930 --> 00:05:09,410
just these options here
109
109
00:05:09,410 --> 00:05:10,730
to the console.
110
110
00:05:10,730 --> 00:05:13,570
So these three,
111
111
00:05:13,570 --> 00:05:14,403
all right.
112
112
00:05:16,070 --> 00:05:17,370
So as always,
113
113
00:05:17,370 --> 00:05:18,510
I like to start
114
114
00:05:18,510 --> 00:05:21,413
with first saying what we will loop over.
115
115
00:05:22,580 --> 00:05:24,750
And so that's gonna be the question map.
116
116
00:05:24,750 --> 00:05:26,690
And so each item
117
117
00:05:26,690 --> 00:05:31,450
of the question will just like before contain both the key
118
118
00:05:31,450 --> 00:05:33,050
and the value.
119
119
00:05:33,050 --> 00:05:36,330
And so here I can now directly restructure that
120
120
00:05:36,330 --> 00:05:38,600
into two separate variables.
121
121
00:05:38,600 --> 00:05:39,640
So this is a really,
122
122
00:05:39,640 --> 00:05:42,563
really good use case of restructuring.
123
123
00:05:43,640 --> 00:05:46,660
Alright, so just to reiterate,
124
124
00:05:46,660 --> 00:05:48,520
this is exactly the same as we did
125
125
00:05:48,520 --> 00:05:50,640
when we looped over the object.
126
126
00:05:50,640 --> 00:05:53,120
The only difference is that for the object,
127
127
00:05:53,120 --> 00:05:56,940
we needed object dot entries right here.
128
128
00:05:56,940 --> 00:05:58,950
And that's just because the object
129
129
00:05:58,950 --> 00:06:00,620
is not an alterable,
130
130
00:06:00,620 --> 00:06:01,940
but then we converted it
131
131
00:06:01,940 --> 00:06:05,970
to an alterable using object dot entries.
132
132
00:06:05,970 --> 00:06:07,810
And so then this part here
133
133
00:06:07,810 --> 00:06:09,710
is exactly the same.
134
134
00:06:09,710 --> 00:06:10,900
Okay.
135
135
00:06:10,900 --> 00:06:11,820
Now keep in mind.
136
136
00:06:11,820 --> 00:06:15,160
We only want to print these three.
137
137
00:06:15,160 --> 00:06:17,010
So essentially we only want
138
138
00:06:17,010 --> 00:06:20,883
to print an element if the key is a number.
139
139
00:06:22,680 --> 00:06:25,262
So let's use what we already know,
140
140
00:06:25,262 --> 00:06:30,262
type off key, equal number,
141
141
00:06:30,850 --> 00:06:33,500
and only then look to the console.
142
142
00:06:33,500 --> 00:06:36,483
So inside here, answer,
143
143
00:06:37,540 --> 00:06:39,130
and then the key.
144
144
00:06:39,130 --> 00:06:41,370
So the number for the person then to choose
145
145
00:06:42,620 --> 00:06:45,320
with the correct value,
146
146
00:06:45,320 --> 00:06:47,793
which is going to be the answer option itself.
147
147
00:06:48,920 --> 00:06:50,960
So here we go.
148
148
00:06:50,960 --> 00:06:52,263
Answer one, two, three,
149
149
00:06:53,500 --> 00:06:56,973
and now let's just also log the question itself.
150
150
00:06:58,500 --> 00:07:00,053
So quiz app,
151
151
00:07:02,263 --> 00:07:06,900
and here we want question dot get, remember,
152
152
00:07:06,900 --> 00:07:10,253
and then the question key.
153
153
00:07:10,253 --> 00:07:14,463
And so now it is complete with question and answers.
154
154
00:07:15,810 --> 00:07:18,320
Now to get the answer from the user,
155
155
00:07:18,320 --> 00:07:20,403
let's again, use a prompt,
156
156
00:07:24,140 --> 00:07:28,023
so answer equal a prompt,
157
157
00:07:30,440 --> 00:07:33,180
and let's ask for your answer
158
158
00:07:35,180 --> 00:07:37,493
and answer.
159
159
00:07:37,493 --> 00:07:40,750
And remember, we need to convert this now to a number
160
160
00:07:41,590 --> 00:07:45,110
because eventually we will compare this number
161
161
00:07:45,110 --> 00:07:47,913
with the key that we have here.
162
162
00:07:49,690 --> 00:07:50,523
All right.
163
163
00:07:51,860 --> 00:07:53,603
Let's just print it then also.
164
164
00:07:57,320 --> 00:07:58,153
Okay.
165
165
00:07:58,153 --> 00:07:59,513
So here we have to question,
166
166
00:08:00,415 --> 00:08:02,223
and of course the correct answer
167
167
00:08:02,223 --> 00:08:03,460
is number three.
168
168
00:08:03,460 --> 00:08:04,633
And so here we go.
169
169
00:08:06,210 --> 00:08:07,950
And now we can use the power
170
170
00:08:07,950 --> 00:08:10,520
of the Boolean keys here in order
171
171
00:08:10,520 --> 00:08:14,187
to print either the success message here
172
172
00:08:14,187 --> 00:08:17,063
or the error message basically.
173
173
00:08:18,270 --> 00:08:19,630
All right.
174
174
00:08:19,630 --> 00:08:21,390
So do you think you can do that
175
175
00:08:21,390 --> 00:08:22,840
on your own?
176
176
00:08:22,840 --> 00:08:25,370
Just take a minute or two and try that
177
177
00:08:25,370 --> 00:08:27,253
on your own right now.
178
178
00:08:30,230 --> 00:08:32,580
So did you manage to do that?
179
179
00:08:32,580 --> 00:08:35,510
Well, let's start by comparing the answer
180
180
00:08:35,510 --> 00:08:38,403
with the correct answer, basically.
181
181
00:08:39,950 --> 00:08:44,950
So that is a question dot get correct.
182
182
00:08:47,880 --> 00:08:51,890
And so this is a three, right?
183
183
00:08:51,890 --> 00:08:55,470
And then we can compare that to the answer.
184
184
00:08:55,470 --> 00:08:56,303
So in this case,
185
185
00:08:56,303 --> 00:08:58,220
this was also three.
186
186
00:08:58,220 --> 00:08:59,053
And so this here,
187
187
00:08:59,053 --> 00:09:01,290
what return true.
188
188
00:09:01,290 --> 00:09:02,520
Correct.
189
189
00:09:02,520 --> 00:09:04,140
And now, since this is true,
190
190
00:09:04,140 --> 00:09:06,420
we can directly plug that
191
191
00:09:06,420 --> 00:09:08,410
into the map.
192
192
00:09:08,410 --> 00:09:11,423
And so this true will then return correct.
193
193
00:09:12,450 --> 00:09:14,300
So that's similar to what we did
194
194
00:09:14,300 --> 00:09:16,883
in the previous video as well.
195
195
00:09:18,490 --> 00:09:19,323
And so again,
196
196
00:09:19,323 --> 00:09:23,963
we are using the power of having Boolean values as keys,
197
197
00:09:25,200 --> 00:09:28,970
and then let's just log that final message
198
198
00:09:28,970 --> 00:09:29,883
to the console.
199
199
00:09:31,090 --> 00:09:33,680
So three again, now,
200
200
00:09:33,680 --> 00:09:35,857
and something went wrong,
201
201
00:09:35,857 --> 00:09:38,830
but I see that it's just here.
202
202
00:09:38,830 --> 00:09:39,663
It's the name?
203
203
00:09:39,663 --> 00:09:41,980
So this is correct.
204
204
00:09:41,980 --> 00:09:42,813
Not correct.
205
205
00:09:43,750 --> 00:09:45,880
So again three
206
206
00:09:45,880 --> 00:09:46,830
and now
207
207
00:09:46,830 --> 00:09:48,383
indeed we get correct.
208
208
00:09:49,640 --> 00:09:50,700
Okay.
209
209
00:09:50,700 --> 00:09:52,000
So this is three here.
210
210
00:09:52,000 --> 00:09:53,690
The answer is three,
211
211
00:09:53,690 --> 00:09:55,040
this is three.
212
212
00:09:55,040 --> 00:09:56,790
And so this here will be true.
213
213
00:09:56,790 --> 00:09:59,110
And so when we get a true
214
214
00:09:59,110 --> 00:10:00,410
from the map,
215
215
00:10:00,410 --> 00:10:04,750
we get this string well,
216
216
00:10:04,750 --> 00:10:06,410
something else.
217
217
00:10:06,410 --> 00:10:08,523
And indeed we get try again.
218
218
00:10:09,380 --> 00:10:10,213
Okay.
219
219
00:10:10,213 --> 00:10:11,046
And with that,
220
220
00:10:11,046 --> 00:10:15,690
we finished this nice little quiz.
221
221
00:10:15,690 --> 00:10:17,650
Now,just to finish here,
222
222
00:10:17,650 --> 00:10:18,800
as a side note,
223
223
00:10:18,800 --> 00:10:21,680
sometimes we also need to convert a map back
224
224
00:10:21,680 --> 00:10:23,120
to an array.
225
225
00:10:23,120 --> 00:10:25,693
So basically to this structure,
226
226
00:10:27,130 --> 00:10:30,950
and we can do that, like this.
227
227
00:10:30,950 --> 00:10:32,560
So convert map
228
228
00:10:32,560 --> 00:10:35,483
to array basically.
229
229
00:10:36,710 --> 00:10:40,110
You can do that by simply building new array
230
230
00:10:40,110 --> 00:10:42,080
and then unpacking again,
231
231
00:10:42,080 --> 00:10:43,740
using the spread operator.
232
232
00:10:43,740 --> 00:10:45,843
The question map,
233
233
00:10:48,340 --> 00:10:50,500
it's asking us here again.
234
234
00:10:50,500 --> 00:10:52,950
And so then the result is essentially
235
235
00:10:52,950 --> 00:10:54,860
this same data structure.
236
236
00:10:54,860 --> 00:10:56,303
So the array of arrays,
237
237
00:10:57,500 --> 00:10:59,890
with which we started.
238
238
00:10:59,890 --> 00:11:01,630
So it's this one here.
239
239
00:11:01,630 --> 00:11:02,970
So in this case, of course,
240
240
00:11:02,970 --> 00:11:05,240
this wouldn't make too much sense,
241
241
00:11:05,240 --> 00:11:07,509
but it's still got to know that sometimes
242
242
00:11:07,509 --> 00:11:10,463
you can convert a map to an array.
243
243
00:11:12,030 --> 00:11:15,830
Let's just preset this here to some value
244
244
00:11:16,980 --> 00:11:19,223
so that it doesn't always bug us here.
245
245
00:11:21,150 --> 00:11:22,550
And by the way,
246
246
00:11:22,550 --> 00:11:23,817
there are also the,
247
247
00:11:26,200 --> 00:11:28,930
the methods that we had on arrays ,
248
248
00:11:28,930 --> 00:11:30,400
which are the entries
249
249
00:11:32,920 --> 00:11:35,160
and also keys
250
250
00:11:35,160 --> 00:11:38,030
and values
251
251
00:11:38,030 --> 00:11:39,823
in case that you need them.
252
252
00:11:41,230 --> 00:11:44,030
Okay, now they give us
253
253
00:11:44,030 --> 00:11:46,230
this weird iterator here.
254
254
00:11:46,230 --> 00:11:48,330
So then just as I showed you before,
255
255
00:11:48,330 --> 00:11:50,560
you have to spread them and put them
256
256
00:11:50,560 --> 00:11:51,453
in a new array.
257
257
00:11:53,540 --> 00:11:55,373
So like this,
258
258
00:11:57,870 --> 00:11:59,890
but this is not really that important.
259
259
00:11:59,890 --> 00:12:02,750
I just wanted to show you that this exists
260
260
00:12:02,750 --> 00:12:04,750
and for this,there's actually no need,
261
261
00:12:04,750 --> 00:12:07,450
because it's going to be exactly the same as this one.
262
262
00:12:08,800 --> 00:12:09,970
Okay.
263
263
00:12:09,970 --> 00:12:11,920
So these are all the keys
264
264
00:12:11,920 --> 00:12:14,193
and all the values in dit.
265
265
00:12:15,890 --> 00:12:18,470
Alright and that's all I have to show you
266
266
00:12:18,470 --> 00:12:20,830
about maps for now,
267
267
00:12:20,830 --> 00:12:22,680
but now you might be wondering
268
268
00:12:22,680 --> 00:12:24,280
when should I use maps?
269
269
00:12:24,280 --> 00:12:26,230
and when should I use objects?
270
270
00:12:26,230 --> 00:12:29,000
Because they are pretty similar, right?
271
271
00:12:29,000 --> 00:12:32,420
Well, that's what the next lecture is all about.
272
272
00:12:32,420 --> 00:12:33,940
There I will help you to choose
273
273
00:12:33,940 --> 00:12:36,210
between all the data structures,
274
274
00:12:36,210 --> 00:12:38,833
including even arrays and sets.
20800
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.