Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
1
00:00:01,170 --> 00:00:03,220
Let's challenge ourselves
2
2
00:00:03,220 --> 00:00:05,473
with Coding Challenge number two.
3
3
00:00:07,230 --> 00:00:09,260
And in this one, we're gonna continue
4
4
00:00:09,260 --> 00:00:12,130
with our football betting application.
5
5
00:00:12,130 --> 00:00:13,600
And let me start by saying
6
6
00:00:13,600 --> 00:00:16,920
that this challenge is actually a bit difficult.
7
7
00:00:16,920 --> 00:00:17,820
All right?
8
8
00:00:17,820 --> 00:00:19,580
But that is on purpose.
9
9
00:00:19,580 --> 00:00:22,450
So after all, it's called a challenge.
10
10
00:00:22,450 --> 00:00:24,930
And so you should really challenge yourself
11
11
00:00:24,930 --> 00:00:26,900
with these exercises.
12
12
00:00:26,900 --> 00:00:28,430
Otherwise it could be called
13
13
00:00:28,430 --> 00:00:31,580
a coding copy and paste, right?
14
14
00:00:31,580 --> 00:00:34,290
So please try your best to solve these.
15
15
00:00:34,290 --> 00:00:36,733
And you can try the problem solving framework
16
16
00:00:36,733 --> 00:00:38,950
that we talked about earlier.
17
17
00:00:38,950 --> 00:00:41,760
And of course you can also use Google MDN
18
18
00:00:41,760 --> 00:00:43,710
and so on and so forth.
19
19
00:00:43,710 --> 00:00:44,720
Okay.
20
20
00:00:44,720 --> 00:00:48,890
But with that out of the way, let's get into the exercises.
21
21
00:00:48,890 --> 00:00:53,470
And the first one is to loop over the game.scored array
22
22
00:00:53,470 --> 00:00:56,720
and then print each of the players to the console
23
23
00:00:56,720 --> 00:00:58,940
along with the goal number.
24
24
00:00:58,940 --> 00:01:00,533
So this one is not that hard.
25
25
00:01:01,520 --> 00:01:03,850
And so let's just...
26
26
00:01:04,839 --> 00:01:06,010
Yeah.
27
27
00:01:06,010 --> 00:01:08,260
So the object is down here,
28
28
00:01:08,260 --> 00:01:11,360
so we're gonna use the same object. All right?
29
29
00:01:11,360 --> 00:01:14,050
So this is the array that I was talking about.
30
30
00:01:14,050 --> 00:01:15,408
And so here, in this case,
31
31
00:01:15,408 --> 00:01:18,670
we should print "lewandowski" goal one,
32
32
00:01:18,670 --> 00:01:22,210
Then here goal two, "Gnarby", goal three "Lewandowski",
33
33
00:01:22,210 --> 00:01:24,397
and goal four, "Hummels".
34
34
00:01:26,734 --> 00:01:28,250
Okay.
35
35
00:01:28,250 --> 00:01:32,950
Then number two, use a loop to calculate the average odd
36
36
00:01:32,950 --> 00:01:35,060
and to log it to the console.
37
37
00:01:35,060 --> 00:01:38,380
And we already studied how to calculate averages.
38
38
00:01:38,380 --> 00:01:41,980
And so you can go check that out if you don't remember.
39
39
00:01:41,980 --> 00:01:46,100
And here you should actually directly use the object itself.
40
40
00:01:46,100 --> 00:01:49,610
So don't destruct the object first into variables
41
41
00:01:49,610 --> 00:01:52,350
and then use that to calculate the average,
42
42
00:01:52,350 --> 00:01:55,720
but instead really calculate the average of the elements
43
43
00:01:55,720 --> 00:01:58,570
in the object, okay?
44
44
00:01:58,570 --> 00:02:01,830
Then number three, I want you to print the three odds
45
45
00:02:01,830 --> 00:02:05,970
to the console and do that in a nice formatted way,
46
46
00:02:05,970 --> 00:02:07,393
like you can see it here.
47
47
00:02:09,970 --> 00:02:13,420
Now here, You're not allowed to hard-code
48
48
00:02:13,420 --> 00:02:14,920
the names of the teams.
49
49
00:02:14,920 --> 00:02:15,753
Alright.
50
50
00:02:15,753 --> 00:02:19,453
So instead get them directly from the game object itself.
51
51
00:02:21,180 --> 00:02:23,380
Now of course you're except for draw
52
52
00:02:23,380 --> 00:02:26,640
because that's nowhere in the game object.
53
53
00:02:26,640 --> 00:02:30,430
So as a hint, I have fear that the odds
54
54
00:02:30,430 --> 00:02:34,250
and the game objects have the exact same property names.
55
55
00:02:34,250 --> 00:02:36,540
And so you can use that knowledge maybe
56
56
00:02:36,540 --> 00:02:38,923
to get the name of the teams here.
57
57
00:02:40,690 --> 00:02:44,630
So these are the three exercises for this challenge,
58
58
00:02:44,630 --> 00:02:47,290
but then I also have a bonus.
59
59
00:02:47,290 --> 00:02:49,690
Now, let me just tell you that I will not solve
60
60
00:02:49,690 --> 00:02:51,720
this bonus question in this video
61
61
00:02:51,720 --> 00:02:54,740
because it would take me a little bit too long
62
62
00:02:54,740 --> 00:02:56,350
but I will still put the solution
63
63
00:02:56,350 --> 00:02:58,750
in the final code of this section,
64
64
00:02:58,750 --> 00:03:00,840
so in the GitHub repository,
65
65
00:03:00,840 --> 00:03:02,680
so you can check out the solution there
66
66
00:03:02,680 --> 00:03:05,770
if you attempt to do this bonus.
67
67
00:03:05,770 --> 00:03:07,610
So this one is really hard.
68
68
00:03:07,610 --> 00:03:10,550
And what I want you to do
69
69
00:03:10,550 --> 00:03:13,430
is to create an object called scores,
70
70
00:03:13,430 --> 00:03:15,950
which will contain the name of the players
71
71
00:03:15,950 --> 00:03:19,200
who scored as properties,
72
72
00:03:19,200 --> 00:03:22,410
and so Gnarby, Hummels, and Lewandowski were the players
73
73
00:03:22,410 --> 00:03:24,290
who scored in this game.
74
74
00:03:24,290 --> 00:03:26,980
And as a value for each of the properties
75
75
00:03:26,980 --> 00:03:29,790
we want the number of goals.
76
76
00:03:29,790 --> 00:03:31,050
Alright.
77
77
00:03:31,050 --> 00:03:33,930
So this means Lewandowski scored two goals
78
78
00:03:33,930 --> 00:03:37,700
and the other two players scored just one goal each.
79
79
00:03:37,700 --> 00:03:40,800
So this is a little bit difficult again
80
80
00:03:40,800 --> 00:03:42,530
but you can do it.
81
81
00:03:42,530 --> 00:03:45,190
Well at least with some research
82
82
00:03:45,190 --> 00:03:47,960
and with some reviewing of all the material
83
83
00:03:47,960 --> 00:03:50,170
of the course so far.
84
84
00:03:50,170 --> 00:03:53,170
Anyway, good luck with this challenge.
85
85
00:03:53,170 --> 00:03:54,170
Take your time.
86
86
00:03:54,170 --> 00:03:55,370
And I'll see you once
87
87
00:03:55,370 --> 00:03:56,203
you're ready.
88
88
00:04:00,350 --> 00:04:01,183
All right.
89
89
00:04:02,210 --> 00:04:07,210
Hopefully you did at least one or two of these exercises.
90
90
00:04:08,060 --> 00:04:10,820
And so here it goes my solution.
91
91
00:04:10,820 --> 00:04:13,050
And keep in mind once more that my solution
92
92
00:04:13,050 --> 00:04:16,430
might be different from yours, but that's totally okay.
93
93
00:04:16,430 --> 00:04:19,840
As long as yours produces the same result.
94
94
00:04:19,840 --> 00:04:23,790
So here, the goal is to score on the scored array,
95
95
00:04:23,790 --> 00:04:26,920
and print all of the players to the console.
96
96
00:04:26,920 --> 00:04:31,920
So const, and let's again fix that later,
97
97
00:04:32,850 --> 00:04:37,850
and then of game.scored.
98
98
00:04:38,110 --> 00:04:40,423
And now we actually want the entries.
99
99
00:04:42,640 --> 00:04:43,473
All right.
100
100
00:04:43,473 --> 00:04:46,730
And we want the indexes because we also want
101
101
00:04:46,730 --> 00:04:47,910
the number of the goal.
102
102
00:04:47,910 --> 00:04:48,743
Remember?
103
103
00:04:48,743 --> 00:04:50,773
So goal one, two, three, and four.
104
104
00:04:51,880 --> 00:04:55,164
Okay. And so entries will give us that.
105
105
00:04:55,164 --> 00:04:58,170
And so now we just need to re-structure that
106
106
00:04:58,170 --> 00:05:01,183
into the index and then the player.
107
107
00:05:04,190 --> 00:05:07,630
Okay. Actually we don't even need to curly braces.
108
108
00:05:07,630 --> 00:05:11,310
Let's just say, console.log and then Goal,
109
109
00:05:15,350 --> 00:05:17,070
then the index plus one.
110
110
00:05:17,070 --> 00:05:19,513
So that it starts at goal number one,
111
111
00:05:21,132 --> 00:05:23,433
and then simply the player.
112
112
00:05:24,500 --> 00:05:25,523
Let's take a look.
113
113
00:05:26,530 --> 00:05:28,570
Oh, and now we have the problem here
114
114
00:05:28,570 --> 00:05:32,003
that I'm accessing game before it is initialized.
115
115
00:05:33,010 --> 00:05:35,483
And so the problem is that the game is down here.
116
116
00:05:36,560 --> 00:05:39,760
So I'll have to take this game object now
117
117
00:05:39,760 --> 00:05:41,113
to that other challenge.
118
118
00:05:42,480 --> 00:05:46,773
So let's just cut it from here and put it here.
119
119
00:05:49,620 --> 00:05:51,080
So now it should work.
120
120
00:05:51,080 --> 00:05:53,260
And indeed we get the four goals
121
121
00:05:53,260 --> 00:05:55,070
nicely printed to the console
122
122
00:05:56,000 --> 00:05:58,633
exactly in the order in which they appear here.
123
123
00:06:01,890 --> 00:06:04,130
Alright, next one.
124
124
00:06:04,130 --> 00:06:08,000
And it is one we have to calculate the average odd.
125
125
00:06:08,000 --> 00:06:12,000
So the average basically of these three numbers here.
126
126
00:06:12,000 --> 00:06:16,340
So what we're gonna do is to loop over this object here
127
127
00:06:16,340 --> 00:06:19,490
and simply add all of these three values together
128
128
00:06:19,490 --> 00:06:23,920
and then finally divide them by the number of elements here.
129
129
00:06:23,920 --> 00:06:26,950
And so that's how you calculate an average.
130
130
00:06:26,950 --> 00:06:31,950
And so we start by creating the average and set it to zero.
131
131
00:06:34,220 --> 00:06:37,403
And so again, we already did that before, I believe.
132
132
00:06:38,410 --> 00:06:39,710
And so now we can loop
133
133
00:06:39,710 --> 00:06:43,073
over the object such as I explained it to you before.
134
134
00:06:45,320 --> 00:06:50,320
const odd of, and now what do we actually want?
135
135
00:06:51,030 --> 00:06:54,770
Do we want the keys or the values or both?
136
136
00:06:54,770 --> 00:06:57,270
Well, in this case, we are really just interested
137
137
00:06:57,270 --> 00:06:59,373
in the values, right?
138
138
00:07:00,230 --> 00:07:03,760
And so this Object.values will give us an array
139
139
00:07:03,760 --> 00:07:06,563
essentially containing these three values.
140
140
00:07:08,740 --> 00:07:13,740
So we need to say game.odds.
141
141
00:07:15,260 --> 00:07:16,093
Okay.
142
142
00:07:16,093 --> 00:07:17,210
And now in each iteration,
143
143
00:07:17,210 --> 00:07:20,560
we will simply add these odds to the average.
144
144
00:07:20,560 --> 00:07:21,490
So that then in the end,
145
145
00:07:21,490 --> 00:07:26,363
we can divide it by the length of this object.values array.
146
146
00:07:27,580 --> 00:07:32,547
So let's do that, plus equal the current odd,
147
147
00:07:34,921 --> 00:07:38,613
and then finally average, average divided equal,
148
148
00:07:41,470 --> 00:07:46,470
and so this is a new one, by object.values, game.odds,
149
149
00:07:52,319 --> 00:07:54,683
and then let's log it to the console.
150
150
00:07:56,880 --> 00:07:59,313
So this one here means basically,
151
151
00:07:59,313 --> 00:08:03,593
average is equal average divided by this here.
152
152
00:08:04,830 --> 00:08:06,840
And this is actually the same as up here,
153
153
00:08:06,840 --> 00:08:10,253
so that's refactor it into let's say,
154
154
00:08:14,480 --> 00:08:19,480
simply odds, and then let's use that here.
155
155
00:08:20,900 --> 00:08:21,733
Odds,
156
156
00:08:23,010 --> 00:08:24,023
and odds.
157
157
00:08:26,930 --> 00:08:28,470
And we have a problem.
158
158
00:08:28,470 --> 00:08:30,844
So let's do some debugging here.
159
159
00:08:30,844 --> 00:08:34,540
I will start by taking a look at the average
160
160
00:08:34,540 --> 00:08:37,423
after it is computed here in the array.
161
161
00:08:39,200 --> 00:08:42,220
So average, oh.
162
162
00:08:42,220 --> 00:08:43,820
So here we have a number
163
163
00:08:43,820 --> 00:08:47,190
which means that something is wrong here in the division.
164
164
00:08:47,190 --> 00:08:48,580
Right.
165
165
00:08:48,580 --> 00:08:52,793
And I see it's because we need to write odds.length.
166
166
00:08:54,020 --> 00:08:58,160
Okay. And so then it will be the number three in this case.
167
167
00:08:58,160 --> 00:09:01,050
So before I was dividing by the entire array
168
168
00:09:01,050 --> 00:09:03,280
and that doesn't make any sense.
169
169
00:09:03,280 --> 00:09:06,773
And so now we should see something close to four here.
170
170
00:09:07,760 --> 00:09:11,560
Yeah. So 3.7 essentially.
171
171
00:09:11,560 --> 00:09:13,463
And so that's our result.
172
172
00:09:14,740 --> 00:09:15,850
Okay.
173
173
00:09:15,850 --> 00:09:18,050
And you can go over to this code here again,
174
174
00:09:19,120 --> 00:09:21,470
if you need to understand that even further,
175
175
00:09:21,470 --> 00:09:25,013
but now let's move on here to Exercise number three.
176
176
00:09:26,300 --> 00:09:29,080
And this time the goal is to print basically
177
177
00:09:29,080 --> 00:09:32,210
the content of the object to the console.
178
178
00:09:32,210 --> 00:09:34,101
So we're gonna loop over that.
179
179
00:09:34,101 --> 00:09:38,420
And again, I will first say what we need here actually.
180
180
00:09:38,420 --> 00:09:42,420
So we want to print both the team and the odd,
181
181
00:09:42,420 --> 00:09:44,590
so we need the entire object.
182
182
00:09:44,590 --> 00:09:48,010
And so just as we learned in a previous lecture,
183
183
00:09:48,010 --> 00:09:53,010
we use object.entries of game.odds.
184
184
00:09:58,650 --> 00:10:02,590
Okay. And so we know that we get an array of arrays,
185
185
00:10:02,590 --> 00:10:07,590
which in each position will have both the team and the odd.
186
186
00:10:07,780 --> 00:10:08,613
All right.
187
187
00:10:08,613 --> 00:10:13,083
So let's say team and odd.
188
188
00:10:15,200 --> 00:10:16,033
All right.
189
189
00:10:16,033 --> 00:10:19,190
And so here it is us who defined the variable name
190
190
00:10:19,190 --> 00:10:21,350
because it is now an array.
191
191
00:10:21,350 --> 00:10:23,763
So we don't have to match any property names.
192
192
00:10:24,630 --> 00:10:28,190
And let's start by simply logging both to the console
193
193
00:10:28,190 --> 00:10:30,793
team and odd.
194
194
00:10:33,180 --> 00:10:34,013
Okay.
195
195
00:10:34,013 --> 00:10:36,780
And so indeed, we already have that kind of working.
196
196
00:10:36,780 --> 00:10:38,660
We already have the team here
197
197
00:10:38,660 --> 00:10:41,663
and we have the three odd values.
198
198
00:10:42,740 --> 00:10:44,940
Now what we want to do is to create a string
199
199
00:10:46,360 --> 00:10:48,113
like this.
200
200
00:10:49,350 --> 00:10:50,590
let's actually copy this.
201
201
00:10:50,590 --> 00:10:52,123
So we know what we have to do.
202
202
00:11:00,500 --> 00:11:02,587
And by the way, here, notice again,
203
203
00:11:02,587 --> 00:11:04,930
what I explained to you in the last lecture,
204
204
00:11:04,930 --> 00:11:08,480
how in the array we use the entries method
205
205
00:11:08,480 --> 00:11:10,310
to get the entries of the array,
206
206
00:11:10,310 --> 00:11:13,900
but in the object we have to use object.entries
207
207
00:11:13,900 --> 00:11:16,090
and then pass into the function,
208
208
00:11:16,090 --> 00:11:19,080
the object that we are interested in.
209
209
00:11:19,080 --> 00:11:20,957
So that's fundamentally difference.
210
210
00:11:20,957 --> 00:11:22,633
So keep that in mind.
211
211
00:11:25,100 --> 00:11:29,220
Okay. So here, we now want to build a string like that.
212
212
00:11:29,220 --> 00:11:34,220
So odd of victory Bayern Munich,
213
213
00:11:34,880 --> 00:11:37,660
draw or victory Borussia Dortmund.
214
214
00:11:37,660 --> 00:11:39,920
And so here, we're gonna need some more logic.
215
215
00:11:39,920 --> 00:11:41,693
Let's just put here some dots.
216
216
00:11:42,890 --> 00:11:45,080
And now, now here the odd.
217
217
00:11:45,080 --> 00:11:46,850
So the odd is the easy part.
218
218
00:11:46,850 --> 00:11:48,713
So we have that one already finished.
219
219
00:11:50,180 --> 00:11:53,113
But now here we need some more complex logic.
220
220
00:11:54,050 --> 00:11:57,253
And actually let's create this part of the string.
221
221
00:11:58,250 --> 00:12:01,310
So like victory Bayern Munich, or Borrusia Dortmund
222
222
00:12:01,310 --> 00:12:04,403
or draw, let's create it here in a separate value.
223
223
00:12:08,720 --> 00:12:10,680
So let's call this one teamString.
224
224
00:12:12,530 --> 00:12:14,050
And so here what I'm gonna use
225
225
00:12:14,050 --> 00:12:16,570
is to use the ternery operator.
226
226
00:12:16,570 --> 00:12:17,600
Okay.
227
227
00:12:17,600 --> 00:12:21,570
So I will say that if the team here is x,
228
228
00:12:21,570 --> 00:12:22,530
like we have a it here,
229
229
00:12:22,530 --> 00:12:25,090
then the string should become draw.
230
230
00:12:25,090 --> 00:12:27,563
And so that will then create this here.
231
231
00:12:29,180 --> 00:12:34,180
So team equals x then the result should be draw.
232
232
00:12:37,170 --> 00:12:42,130
But if not, then we need the team name itself.
233
233
00:12:42,130 --> 00:12:44,680
So how will we get that?
234
234
00:12:44,680 --> 00:12:47,303
And remember, there was a hint about this.
235
235
00:12:48,400 --> 00:12:49,970
So note how the odds
236
236
00:12:49,970 --> 00:12:53,610
and the game objects have the same property names.
237
237
00:12:53,610 --> 00:12:56,700
And indeed here we have team one, team two,
238
238
00:12:56,700 --> 00:13:00,140
and here we have team one and team two as well.
239
239
00:13:00,140 --> 00:13:02,653
And so here are the team names.
240
240
00:13:03,970 --> 00:13:07,060
And so let's now get these team names
241
241
00:13:07,060 --> 00:13:10,163
using these keys that we already have here.
242
242
00:13:13,405 --> 00:13:15,520
So we want to string victory.
243
243
00:13:21,660 --> 00:13:25,483
And then we go to the game object and team.
244
244
00:13:27,400 --> 00:13:28,363
Let's check.
245
245
00:13:29,580 --> 00:13:32,313
Now I know of course we need to put that string here.
246
246
00:13:34,270 --> 00:13:39,270
So teamString and it works beautiful.
247
247
00:13:41,330 --> 00:13:43,750
So let's just recap this part here.
248
248
00:13:43,750 --> 00:13:46,010
So here we go into the game,
249
249
00:13:46,010 --> 00:13:48,470
which is the entire game object
250
250
00:13:48,470 --> 00:13:51,230
and we take the property team.
251
251
00:13:51,230 --> 00:13:54,810
But team is already this property name here, right?
252
252
00:13:54,810 --> 00:13:56,610
So it's team one or team two.
253
253
00:13:56,610 --> 00:13:59,580
And so then we take that to read the property
254
254
00:13:59,580 --> 00:14:02,003
with the same name from the game object.
255
255
00:14:03,400 --> 00:14:06,733
And so therefore we get Bayern Munich and Borussia Dortmund.
256
256
00:14:08,430 --> 00:14:09,361
Okay. Great.
257
257
00:14:09,361 --> 00:14:12,460
So this one was a little bit more tough
258
258
00:14:12,460 --> 00:14:15,320
but we managed to do it in the end.
259
259
00:14:15,320 --> 00:14:18,120
Now, again, I will not create the solution
260
260
00:14:18,120 --> 00:14:20,620
for the bonus but you can always find it
261
261
00:14:20,620 --> 00:14:23,720
in the final code of this section.
262
262
00:14:23,720 --> 00:14:25,100
And with that being said,
263
263
00:14:25,100 --> 00:14:28,143
let's now go back to learning some more JavaScript.
22168
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.