All language subtitles for 015 Operator Precedence.en_US

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic Download
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,430 --> 00:00:02,430 And this lecture, 2 00:00:02,430 --> 00:00:04,530 we're gonna talk about the precedence 3 00:00:04,530 --> 00:00:06,253 of different operators. 4 00:00:07,990 --> 00:00:11,700 So I already commented out the code from the last lecture, 5 00:00:11,700 --> 00:00:14,730 but let's actually bring some of it back here. 6 00:00:14,730 --> 00:00:18,543 And in particular, the calculation of this ages. 7 00:00:21,090 --> 00:00:22,480 So like this. 8 00:00:22,480 --> 00:00:25,580 And then also this code that we discussed 9 00:00:25,580 --> 00:00:28,310 by the end of the last video. 10 00:00:28,310 --> 00:00:29,690 Remember that? 11 00:00:29,690 --> 00:00:33,450 So the question that I asked by the end of the last video 12 00:00:33,450 --> 00:00:38,040 was why these two subtractions here so this one, 13 00:00:38,040 --> 00:00:42,403 and this one are executed before this comparison operator. 14 00:00:43,440 --> 00:00:46,763 So basically the question is why does this work? 15 00:00:48,470 --> 00:00:51,683 Okay, because we see that it does actually work. 16 00:00:52,800 --> 00:00:56,390 So this number here is clearly gonna be higher 17 00:00:56,390 --> 00:00:57,373 than this one. 18 00:00:58,230 --> 00:01:01,300 Well, it works this way because JavaScript 19 00:01:01,300 --> 00:01:05,490 has a well-defined order of operator precedence. 20 00:01:05,490 --> 00:01:10,180 So basically the order in which operators are executed. 21 00:01:10,180 --> 00:01:12,930 And to actually see the precedence of all the different 22 00:01:12,930 --> 00:01:17,433 operators, let's check out a very handy precedence table. 23 00:01:18,330 --> 00:01:21,150 So let's Google MDN. 24 00:01:21,150 --> 00:01:23,610 Which stands for Mozilla Developer Network 25 00:01:23,610 --> 00:01:27,893 and then operator precedence. 26 00:01:29,420 --> 00:01:31,690 And so the one you're looking for is this one. 27 00:01:31,690 --> 00:01:35,633 So the one that starts with developer.mozilla.org. 28 00:01:36,970 --> 00:01:39,370 So MDN is a very well known 29 00:01:39,370 --> 00:01:42,080 and widely used documentation site. 30 00:01:42,080 --> 00:01:45,400 And we will actually use MDN a lot throughout the course. 31 00:01:45,400 --> 00:01:47,490 And in one of the future sections, 32 00:01:47,490 --> 00:01:50,460 I will show you a bit better how to use this site. 33 00:01:50,460 --> 00:01:53,610 But for now we're looking for a table that is here 34 00:01:53,610 --> 00:01:56,560 on this page and it's this one. 35 00:01:56,560 --> 00:02:00,500 So here we can see that grouping using parenthesis here, 36 00:02:00,500 --> 00:02:03,428 has the highest precedence of 21. 37 00:02:03,428 --> 00:02:07,640 And then we have all the operators that we already saw. 38 00:02:07,640 --> 00:02:11,210 So here plus minus, plus plus, 39 00:02:11,210 --> 00:02:14,160 so they have a precedence of 17. 40 00:02:14,160 --> 00:02:16,820 Then we have a bunch of other stuff here that we don't know 41 00:02:16,820 --> 00:02:20,523 yet, but here is also type of, that we already do know. 42 00:02:21,360 --> 00:02:24,430 We have the exponentiation operator that I showed you. 43 00:02:24,430 --> 00:02:27,000 We have all these math operators here. 44 00:02:27,000 --> 00:02:31,430 We have all comparison operators, right? 45 00:02:31,430 --> 00:02:35,970 We have some well, some other equality operators here, 46 00:02:35,970 --> 00:02:39,110 and a bunch of other operators. 47 00:02:39,110 --> 00:02:41,750 And this is actually a nice reference where you can see all 48 00:02:41,750 --> 00:02:46,040 the operators that exist in JavaScript in one handy table. 49 00:02:46,040 --> 00:02:49,410 But let's not stay in the context of our current example 50 00:02:49,410 --> 00:02:50,870 which is this one here. 51 00:02:50,870 --> 00:02:53,850 And let's understand what exactly happens here, 52 00:02:53,850 --> 00:02:56,800 in terms of operator precedence. 53 00:02:56,800 --> 00:03:01,310 So we already know that these two calculations here are done 54 00:03:01,310 --> 00:03:02,950 before the comparison. 55 00:03:02,950 --> 00:03:05,623 And so let's actually see that in the table. 56 00:03:06,730 --> 00:03:09,020 So here we have the comparison. 57 00:03:09,020 --> 00:03:12,330 So this greater than and you see that it has a lower 58 00:03:12,330 --> 00:03:15,890 precedence than the subtraction here. 59 00:03:15,890 --> 00:03:19,330 So this has 14 and this has 12, right? 60 00:03:19,330 --> 00:03:21,060 And of course you don't need to know any 61 00:03:21,060 --> 00:03:23,170 of these precedence numbers. 62 00:03:23,170 --> 00:03:24,510 Okay, don't worry about that. 63 00:03:24,510 --> 00:03:27,260 It doesn't matter, no one knows these. 64 00:03:27,260 --> 00:03:30,514 You just have to have a general idea of which operators 65 00:03:30,514 --> 00:03:32,743 are executed first. 66 00:03:33,700 --> 00:03:36,156 So usually all the math operators are executed 67 00:03:36,156 --> 00:03:39,630 before the comparison operators for example, 68 00:03:39,630 --> 00:03:41,200 because that makes sense. 69 00:03:41,200 --> 00:03:44,480 And so with this, we explain why this kind of comparison 70 00:03:44,480 --> 00:03:46,177 that we have here works. 71 00:03:46,177 --> 00:03:47,630 Now in this table, 72 00:03:47,630 --> 00:03:51,130 we can also see which operators are executed from left 73 00:03:51,130 --> 00:03:54,230 to right and which one from right to left. 74 00:03:54,230 --> 00:03:55,063 Like for example, 75 00:03:55,063 --> 00:03:58,820 the exponentiation operator is executed from right to left. 76 00:03:58,820 --> 00:04:01,870 While most operators especially the mathematical ones 77 00:04:01,870 --> 00:04:04,600 are executed from left to right. 78 00:04:04,600 --> 00:04:05,453 For example, 79 00:04:07,950 --> 00:04:12,950 let's say we wanted to calculate 25 minus 10 minus five. 80 00:04:14,770 --> 00:04:18,623 And so this one should be 10, right? 81 00:04:19,630 --> 00:04:21,033 So let's check that. 82 00:04:21,900 --> 00:04:23,780 And indeed we get 10. 83 00:04:23,780 --> 00:04:26,630 But if it was right to left, 84 00:04:26,630 --> 00:04:29,330 then it would be five minus 10 minus 25 85 00:04:29,330 --> 00:04:32,690 which would then be something completely different. 86 00:04:32,690 --> 00:04:36,020 So this is an example of left to right operation. 87 00:04:36,020 --> 00:04:37,620 But assignment, for example, 88 00:04:37,620 --> 00:04:40,723 is a good example of right to left execution. 89 00:04:41,650 --> 00:04:44,293 So let's see where we actually have assignment here. 90 00:04:45,550 --> 00:04:49,080 So it should be one of the lowest ones. 91 00:04:49,080 --> 00:04:50,830 And indeed it is. 92 00:04:50,830 --> 00:04:52,063 So it's number three. 93 00:04:53,750 --> 00:04:57,450 And so as I said, this one is right to left. 94 00:04:57,450 --> 00:04:59,130 And so let me show you a nice example 95 00:04:59,130 --> 00:05:01,510 of why this is important. 96 00:05:01,510 --> 00:05:03,940 So let's declare two variables, 97 00:05:03,940 --> 00:05:08,210 let X and Y and here's something new. 98 00:05:08,210 --> 00:05:12,433 So we can define two variables at the same time like this. 99 00:05:13,470 --> 00:05:16,730 So now in one line we declared two empty values. 100 00:05:16,730 --> 00:05:19,810 So two values which are gonna hold for now 101 00:05:19,810 --> 00:05:22,310 the value of undefined, right? 102 00:05:22,310 --> 00:05:24,860 So that's X and Y. 103 00:05:24,860 --> 00:05:26,950 And now, we can do this. 104 00:05:26,950 --> 00:05:31,020 We can say that X should be equal to Y should be equal 105 00:05:31,020 --> 00:05:36,020 to 25 minus 10, minus five which we already know is 10. 106 00:05:38,210 --> 00:05:41,623 And so let's now log both of these values to the console. 107 00:05:42,520 --> 00:05:45,133 And what do you think will happen? 108 00:05:46,800 --> 00:05:48,680 You can really try to think about this 109 00:05:48,680 --> 00:05:50,163 before checking the result. 110 00:05:51,860 --> 00:05:54,570 And so what is it gonna be? 111 00:05:54,570 --> 00:05:56,810 And actually let's delete this one first, 112 00:05:56,810 --> 00:05:58,833 so to avoid some confusion there. 113 00:05:59,710 --> 00:06:00,543 And. 114 00:06:01,760 --> 00:06:05,570 So, we see that X and Y are both 10. 115 00:06:05,570 --> 00:06:08,120 And so let's analyze why that happens. 116 00:06:08,120 --> 00:06:11,140 So when JavaScript first finds this line of code 117 00:06:11,140 --> 00:06:12,480 here to execute. 118 00:06:12,480 --> 00:06:15,090 It will look at all the operators that are present 119 00:06:15,090 --> 00:06:17,760 and it will see the minus operators. 120 00:06:17,760 --> 00:06:19,610 And so it will start with these, 121 00:06:19,610 --> 00:06:23,310 because they have a higher precedence, right? 122 00:06:23,310 --> 00:06:27,457 So assignment has only three, but the, 123 00:06:30,680 --> 00:06:32,390 where is it? 124 00:06:32,390 --> 00:06:33,223 Here it is. 125 00:06:33,223 --> 00:06:35,920 So the subtraction has a 14. 126 00:06:35,920 --> 00:06:38,230 And so of course it's gonna be executed first 127 00:06:38,230 --> 00:06:39,600 and left to right. 128 00:06:39,600 --> 00:06:41,110 And so, as we already know, 129 00:06:41,110 --> 00:06:43,363 this year will turn out to be 10. 130 00:06:45,090 --> 00:06:46,950 And so let's just write that here. 131 00:06:46,950 --> 00:06:48,830 So after these minus operations 132 00:06:48,830 --> 00:06:52,420 we end up with this code basically. 133 00:06:52,420 --> 00:06:57,420 So X equals Y equals 10, right? 134 00:06:57,540 --> 00:07:01,720 Because again, 10 is the result of doing these operations. 135 00:07:01,720 --> 00:07:04,200 And so now we only have two operators left 136 00:07:04,200 --> 00:07:06,430 which are the equal operators. 137 00:07:06,430 --> 00:07:08,470 And so now they are executed 138 00:07:08,470 --> 00:07:12,950 but as I showed you before they are executed right to left. 139 00:07:12,950 --> 00:07:17,950 So from this side here, starting from the 10 to this side. 140 00:07:17,950 --> 00:07:22,950 And so what happens is that we will have Y equals 10. 141 00:07:23,570 --> 00:07:26,290 And so at this point, Y is equal to 10. 142 00:07:26,290 --> 00:07:31,290 And so what we have then is X equal to 10, okay. 143 00:07:31,290 --> 00:07:34,770 And then after that, we're only left with X equal 10. 144 00:07:34,770 --> 00:07:39,410 And so at the end, both X and Y are gonna be 10. 145 00:07:39,410 --> 00:07:41,660 Okay, maybe that sounded a bit confusing, 146 00:07:41,660 --> 00:07:43,060 but that's just how it works 147 00:07:43,060 --> 00:07:46,310 when you evaluate from right to left. 148 00:07:46,310 --> 00:07:48,510 And actually that's the way it has to be, 149 00:07:48,510 --> 00:07:51,770 because if it was the other way around this wouldn't work. 150 00:07:51,770 --> 00:07:54,010 Just imagine if we had this assignment 151 00:07:54,010 --> 00:07:56,070 working from left to right. 152 00:07:56,070 --> 00:07:58,840 Then X would be equal to Y 153 00:07:58,840 --> 00:08:01,390 and Y is undefined at this point. 154 00:08:01,390 --> 00:08:06,200 Remember, because we declared it here as an empty variable. 155 00:08:06,200 --> 00:08:07,230 And so again, 156 00:08:07,230 --> 00:08:10,286 if assignment would be from left to right then first 157 00:08:10,286 --> 00:08:13,450 X would be equal to Y which would be undefined 158 00:08:13,450 --> 00:08:16,660 and then Y would be equal to 10. 159 00:08:16,660 --> 00:08:19,497 And so that's not the result that we expect here. 160 00:08:19,497 --> 00:08:22,060 And so once more, the way this works 161 00:08:22,060 --> 00:08:25,750 is actually very logical and makes a lot of sense. 162 00:08:25,750 --> 00:08:27,670 So I hope that made sense. 163 00:08:27,670 --> 00:08:28,503 And now to finish, 164 00:08:28,503 --> 00:08:33,430 let's just check out the one with the highest precedence, 165 00:08:33,430 --> 00:08:35,230 which is just grouping. 166 00:08:35,230 --> 00:08:37,380 So basically using parenthesis. 167 00:08:37,380 --> 00:08:40,910 And that actually works just like in mathematics 168 00:08:40,910 --> 00:08:44,884 where operations within parenthesis are also executed first. 169 00:08:44,884 --> 00:08:48,300 So I hope you remember that from school. 170 00:08:48,300 --> 00:08:50,770 And the great example is to calculate 171 00:08:50,770 --> 00:08:53,300 the average of two values. 172 00:08:53,300 --> 00:08:56,700 So we have age Jonas and age Sarah. 173 00:08:56,700 --> 00:09:00,353 And so let's calculate the average age of these two people. 174 00:09:02,120 --> 00:09:04,380 So let's actually start by logging their ages 175 00:09:04,380 --> 00:09:07,183 to the console, just so we see. 176 00:09:10,850 --> 00:09:14,950 So age Jonas and age Sarah. 177 00:09:14,950 --> 00:09:17,330 And now I want to calculate the average. 178 00:09:17,330 --> 00:09:19,530 And actually that stood out here above that. 179 00:09:20,440 --> 00:09:23,400 So let's say average age. 180 00:09:23,400 --> 00:09:28,090 And once more, don't forget the descriptive variable names. 181 00:09:28,090 --> 00:09:31,340 So average age describes exactly what this variable 182 00:09:31,340 --> 00:09:33,210 is going to hold. 183 00:09:33,210 --> 00:09:36,300 So to calculate an average, we need to add two values 184 00:09:36,300 --> 00:09:38,930 together and then divide them by two. 185 00:09:38,930 --> 00:09:41,760 At least that's when we have just two values. 186 00:09:41,760 --> 00:09:43,050 So let's say, 187 00:09:43,050 --> 00:09:48,010 age Jonas plus age Sarah. 188 00:09:48,010 --> 00:09:52,230 So that's the addition and then divided by two. 189 00:09:52,230 --> 00:09:54,750 But now what is going to happen? 190 00:09:54,750 --> 00:09:57,073 Well, according to our precedence table, 191 00:09:57,930 --> 00:10:02,930 we have the division here happening before the subtraction. 192 00:10:03,360 --> 00:10:06,740 So this is 15 and this is 14. 193 00:10:06,740 --> 00:10:10,360 And so what happens first is age Sarah is gonna be divided 194 00:10:10,360 --> 00:10:13,473 by two and then the age of Jonas is gonna be added. 195 00:10:14,940 --> 00:10:18,893 So let's actually log that results here as well. 196 00:10:21,560 --> 00:10:25,510 And so here the average age is now 55.5. 197 00:10:25,510 --> 00:10:28,560 Which really doesn't make any sense because how can 198 00:10:28,560 --> 00:10:33,130 the average be larger than one of the two ages, right? 199 00:10:33,130 --> 00:10:35,430 And so that's where the parenthesis come in. 200 00:10:35,430 --> 00:10:39,010 So by using parenthesis, once more, 201 00:10:39,010 --> 00:10:41,170 just like in mathematics, 202 00:10:41,170 --> 00:10:44,050 we can make it so that this operation here, 203 00:10:44,050 --> 00:10:46,270 is executed first. 204 00:10:46,270 --> 00:10:48,910 Okay, so basically everything that is within 205 00:10:48,910 --> 00:10:53,910 the parenthesis which have the precedence of 21, right? 206 00:10:54,472 --> 00:10:59,472 So now this one is executed first and then the division. 207 00:11:00,160 --> 00:11:04,280 And so yeah, now it makes sense. 208 00:11:04,280 --> 00:11:05,113 Okay. 209 00:11:05,113 --> 00:11:07,720 I hope that wasn't too confusing. 210 00:11:07,720 --> 00:11:09,230 And now you're actually ready 211 00:11:09,230 --> 00:11:11,620 for your first coding challenge. 212 00:11:11,620 --> 00:11:14,230 So I hope to see you soon in the next video 213 00:11:14,230 --> 00:11:15,943 for your first challenge. 15812

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.