All language subtitles for 2. Activating Strict Mode

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
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
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 1 00:00:01,300 --> 00:00:03,770 Now before continuing to learn JavaScript, 2 2 00:00:03,770 --> 00:00:05,290 in this new section, 3 3 00:00:05,290 --> 00:00:08,610 we should first activate a special mode in JavaScript, 4 4 00:00:08,610 --> 00:00:10,223 called Strict Mode. 5 5 00:00:12,090 --> 00:00:15,200 And here on my desktop I already have the folder, 6 6 00:00:15,200 --> 00:00:18,160 for this part 2 fundamental section. 7 7 00:00:18,160 --> 00:00:20,380 And for you as I explained before, 8 8 00:00:20,380 --> 00:00:23,725 these starred files come from the get up repertory 9 9 00:00:23,725 --> 00:00:26,390 that I showed you at the beginning of the course. 10 10 00:00:26,390 --> 00:00:30,370 So use that get up reparatory as your starter folder 11 11 00:00:30,370 --> 00:00:32,740 or ofcourse you can just copy that data 12 12 00:00:32,740 --> 00:00:35,730 somewhere else to your computer and work from there, 13 13 00:00:35,730 --> 00:00:36,923 whatever works for you. 14 14 00:00:39,680 --> 00:00:43,340 Now I'm creating here in UVS code window 15 15 00:00:46,120 --> 00:00:49,690 and lets open this new folder. 16 16 00:00:49,690 --> 00:00:51,910 So that's our new working folder 17 17 00:00:51,910 --> 00:00:55,870 and this time we already have the script file here 18 18 00:00:55,870 --> 00:00:58,860 and in the HDML file, 19 19 00:00:58,860 --> 00:01:02,300 we see that the script is also already linked, 20 20 00:01:02,300 --> 00:01:05,290 so we don't have to do that this time. 21 21 00:01:05,290 --> 00:01:08,653 At this point I assume that you already know how to do that. 22 22 00:01:10,150 --> 00:01:12,290 So closing the side bar here 23 23 00:01:12,290 --> 00:01:15,810 and lets now get started in this new section. 24 24 00:01:15,810 --> 00:01:19,470 And as I said lets start with strict mode. 25 25 00:01:19,470 --> 00:01:21,403 So strict mode is a special mode 26 26 00:01:21,403 --> 00:01:24,090 that we can activate in JavaScript, 27 27 00:01:24,090 --> 00:01:25,750 which makes it easier for us 28 28 00:01:25,750 --> 00:01:28,820 to write a secure JavaScript code. 29 29 00:01:28,820 --> 00:01:31,630 And all we have to do to activate strict mode 30 30 00:01:31,630 --> 00:01:35,550 is to write this ring at the beginning of the script 31 31 00:01:35,550 --> 00:01:40,260 so use strict and that's it. 32 32 00:01:40,260 --> 00:01:42,540 So with this, we activated strict mode 33 33 00:01:42,540 --> 00:01:44,520 for the entire script. 34 34 00:01:44,520 --> 00:01:47,640 Now what's important is that this line of code, 35 35 00:01:47,640 --> 00:01:49,570 so this statement here basically 36 36 00:01:49,570 --> 00:01:53,050 has to be the very first statement in the script. 37 37 00:01:53,050 --> 00:01:55,341 So if we have any code before this 38 38 00:01:55,341 --> 00:01:58,290 then strict mode will not be activated. 39 39 00:01:58,290 --> 00:02:00,690 Comments are allowed because JavaScript 40 40 00:02:00,690 --> 00:02:03,720 will just ignore them but no code. 41 41 00:02:03,720 --> 00:02:07,670 Okay, now we actually can also activate strict mode, 42 42 00:02:07,670 --> 00:02:11,490 only for a specific function or a specific block. 43 43 00:02:11,490 --> 00:02:14,240 But I don't really see the point in doing that 44 44 00:02:14,240 --> 00:02:18,430 and so I always just use it at the beginning of each script 45 45 00:02:18,430 --> 00:02:21,070 and so I believe that you should do the same. 46 46 00:02:21,070 --> 00:02:22,910 So always just put strict mode 47 47 00:02:22,910 --> 00:02:24,860 in the beginning of your scripts 48 48 00:02:24,860 --> 00:02:28,350 and like that write more secure code. 49 49 00:02:28,350 --> 00:02:30,940 And when secure, I mean that strict mode 50 50 00:02:30,940 --> 00:02:33,170 makes it easier for us developers 51 51 00:02:33,170 --> 00:02:35,350 to avoid accidental errors. 52 52 00:02:35,350 --> 00:02:39,790 So basically it helps us introduce the bugs into our code 53 53 00:02:39,790 --> 00:02:42,080 and that's because of 2 reasons. 54 54 00:02:42,080 --> 00:02:45,790 First, strict mode forbids us to do certain things 55 55 00:02:45,790 --> 00:02:49,110 and second, it will actually create visible errors for us 56 56 00:02:49,110 --> 00:02:52,730 in certain situations in which without strict mode 57 57 00:02:52,730 --> 00:02:55,730 JavaScript will simply fail silently 58 58 00:02:55,730 --> 00:02:58,870 without letting us know that we did a mistake. 59 59 00:02:58,870 --> 00:02:59,760 Okay. 60 60 00:02:59,760 --> 00:03:04,220 So again, first strict mode forbids us to do certain things 61 61 00:03:04,220 --> 00:03:06,670 and second it creates visible errors 62 62 00:03:06,670 --> 00:03:09,920 and the developer console, where in other situations 63 63 00:03:09,920 --> 00:03:13,060 JavaScript would just fail silently. 64 64 00:03:13,060 --> 00:03:15,830 Okay, but now to make this a bit more clear, 65 65 00:03:15,830 --> 00:03:18,260 Lets actually see an example of 66 66 00:03:18,260 --> 00:03:20,370 one of the most important changes 67 67 00:03:20,370 --> 00:03:22,123 that strict mode introduces. 68 68 00:03:23,010 --> 00:03:25,030 So lets create a variable here 69 69 00:03:25,030 --> 00:03:28,890 with a complicated name lets say hasDriverslicense 70 70 00:03:33,920 --> 00:03:36,740 and lets initialize it as false here. 71 71 00:03:36,740 --> 00:03:41,740 And then I'll also create, pass test and set that to true. 72 72 00:03:44,300 --> 00:03:46,250 And I'm using let in both of them 73 73 00:03:46,250 --> 00:03:48,470 because I want to change them later 74 74 00:03:48,470 --> 00:03:50,800 and actually this one not. 75 75 00:03:50,800 --> 00:03:52,540 So lets just use a const here, 76 76 00:03:52,540 --> 00:03:56,020 because remember by default we should always const 77 77 00:03:56,020 --> 00:03:58,300 to avoid accidental errors. 78 78 00:03:58,300 --> 00:04:00,490 So basically there is a certain person 79 79 00:04:00,490 --> 00:04:04,150 which right now does not have a drivers license 80 80 00:04:04,150 --> 00:04:06,340 but they just passed a test, 81 81 00:04:06,340 --> 00:04:09,513 that's why we have passed test set to true. 82 82 00:04:10,490 --> 00:04:12,760 And now we want to write some logic 83 83 00:04:12,760 --> 00:04:15,110 so that when they pass the test 84 84 00:04:15,110 --> 00:04:18,550 this variable here gets set to true. 85 85 00:04:18,550 --> 00:04:21,707 So, we can say if passTest, right? 86 86 00:04:24,160 --> 00:04:27,040 Because this one here is a boolean value 87 87 00:04:27,040 --> 00:04:30,610 and so this condition will be either true or false. 88 88 00:04:30,610 --> 00:04:34,930 And then lets introduce a simple bug here, okay? 89 89 00:04:34,930 --> 00:04:37,950 So this is a kind of hard to write variable name 90 90 00:04:37,950 --> 00:04:41,343 and so lets pretend that we are writing it wrong here. 91 91 00:04:42,500 --> 00:04:47,500 So hasDriversLicense equal to true. 92 92 00:04:49,670 --> 00:04:53,820 So what I did here was to basically omit the 's' 93 93 00:04:53,820 --> 00:04:57,270 So this letter here is not in this variable 94 94 00:04:57,270 --> 00:04:59,820 that am trying to change here to true. 95 95 00:04:59,820 --> 00:05:03,510 And again that is an error I'm making here on purpose, 96 96 00:05:03,510 --> 00:05:06,110 just to show you how strict mode can help us 97 97 00:05:06,110 --> 00:05:07,950 avoid a certain kind of error, 98 98 00:05:07,950 --> 00:05:10,500 because doing this is actually more common 99 99 00:05:10,500 --> 00:05:13,050 than you might think, okay? 100 100 00:05:13,050 --> 00:05:15,810 And now lets lock something to the console 101 101 00:05:15,810 --> 00:05:18,710 if the person has the drivers license. 102 102 00:05:18,710 --> 00:05:20,570 And so now were actually gonna go back 103 103 00:05:20,570 --> 00:05:22,570 to writing it correctly. 104 104 00:05:22,570 --> 00:05:26,790 So if hasDriversLicense and so you see that now 105 105 00:05:28,970 --> 00:05:31,230 this one is exactly the same, 106 106 00:05:31,230 --> 00:05:33,013 as VS code highlights both. 107 107 00:05:34,530 --> 00:05:39,530 So if hasDriversLicense then log to the console, 108 108 00:05:41,360 --> 00:05:44,680 I can drive. 109 109 00:05:44,680 --> 00:05:46,360 And now lets actually start 110 110 00:05:46,360 --> 00:05:48,860 by deactivating strict mode again, 111 111 00:05:48,860 --> 00:05:52,573 just so we see how this bug could affect our code. 112 112 00:05:53,590 --> 00:05:56,610 So I'm giving it a save and then lets go 113 113 00:05:58,510 --> 00:06:01,713 and open this index.hdml file. 114 114 00:06:04,140 --> 00:06:05,770 Okay? 115 115 00:06:05,770 --> 00:06:09,030 Now lets open up to console here 116 116 00:06:09,030 --> 00:06:11,130 and again I'm gonna increase the text 117 117 00:06:11,130 --> 00:06:15,393 by hitting command plus a couple of times here. 118 118 00:06:16,350 --> 00:06:17,530 Okay? 119 119 00:06:17,530 --> 00:06:19,470 So lets reload here just to make sure 120 120 00:06:19,470 --> 00:06:21,920 that everything is working 121 121 00:06:21,920 --> 00:06:26,090 and now what we see is that it didn't log I can drive 122 122 00:06:26,090 --> 00:06:27,340 to the console. 123 123 00:06:27,340 --> 00:06:29,310 Even though we had attempted to set 124 124 00:06:29,310 --> 00:06:32,160 hasDriversLicense to true here, 125 125 00:06:32,160 --> 00:06:35,530 so we expected that drivers license being true 126 126 00:06:35,530 --> 00:06:38,260 should then log I can drive. 127 127 00:06:38,260 --> 00:06:40,930 But it didn't work and that's because of the mistake 128 128 00:06:40,930 --> 00:06:43,101 that I just introduced here on purpose 129 129 00:06:43,101 --> 00:06:45,270 forgetting this 's' 130 130 00:06:45,270 --> 00:06:48,910 so without the error it should work, right? 131 131 00:06:48,910 --> 00:06:51,313 But without it, its not gonna work. 132 132 00:06:52,540 --> 00:06:54,560 And again because basically here 133 133 00:06:54,560 --> 00:06:56,840 I set a new variable to true 134 134 00:06:56,840 --> 00:06:58,460 and not the original one, 135 135 00:06:58,460 --> 00:07:00,260 so this one is still false 136 136 00:07:00,260 --> 00:07:03,660 and that's why here, this logging does not happen. 137 137 00:07:03,660 --> 00:07:05,640 So now our program has a bug 138 138 00:07:05,640 --> 00:07:07,660 which means that it has a mistake 139 139 00:07:07,660 --> 00:07:11,010 and we would now go ahead and find that bug. 140 140 00:07:11,010 --> 00:07:14,050 But, strict mode can actually help us with this. 141 141 00:07:14,050 --> 00:07:15,573 So lets turn it back on, 142 142 00:07:17,020 --> 00:07:19,780 give it a save, now try it again. 143 143 00:07:19,780 --> 00:07:22,230 And now we actually get an error. 144 144 00:07:22,230 --> 00:07:26,760 So here we see that hasDriversLicense is not defined, 145 145 00:07:26,760 --> 00:07:30,200 so in line number 6 which is right here 146 146 00:07:30,200 --> 00:07:32,440 and so this error message now tells us 147 147 00:07:32,440 --> 00:07:34,330 exactly what is wrong. 148 148 00:07:34,330 --> 00:07:37,200 So it tells us that this variable is not defined 149 149 00:07:37,200 --> 00:07:40,410 and then we can see, oh we did a mistake here, 150 150 00:07:40,410 --> 00:07:41,827 we're missing the 's', 151 151 00:07:42,700 --> 00:07:45,100 right, so now its the same variable, 152 152 00:07:45,100 --> 00:07:48,470 here, here and here, okay? 153 153 00:07:48,470 --> 00:07:51,760 And so if we try that now again. 154 154 00:07:51,760 --> 00:07:53,490 then the error is gone. 155 155 00:07:53,490 --> 00:07:57,660 And so strict mode really helped us avoid this kind of bug 156 156 00:07:57,660 --> 00:07:59,330 that we created here. 157 157 00:07:59,330 --> 00:08:01,340 You can experiment a little bit with this 158 158 00:08:01,340 --> 00:08:03,640 to make it really clear. 159 159 00:08:03,640 --> 00:08:06,330 Now another thing that strict mode does 160 160 00:08:06,330 --> 00:08:09,600 is to introduce a short list of variable names 161 161 00:08:09,600 --> 00:08:11,700 that are reserved for features 162 162 00:08:11,700 --> 00:08:14,453 that might be added to the language a bit later. 163 163 00:08:16,590 --> 00:08:20,573 For example, lets try to define a variable called interface, 164 164 00:08:25,630 --> 00:08:27,720 for example, for an audio interface 165 165 00:08:27,720 --> 00:08:29,023 and now if we try this. 166 166 00:08:30,110 --> 00:08:33,630 Then we see that, we get an unexpected strict mode 167 167 00:08:33,630 --> 00:08:37,210 reserved word, error message basically 168 168 00:08:37,210 --> 00:08:39,700 and that is again because JavaScript 169 169 00:08:39,700 --> 00:08:42,810 is reserving this word here for a feature 170 170 00:08:42,810 --> 00:08:45,470 that it might implement in the future. 171 171 00:08:45,470 --> 00:08:47,940 And so by reserving these kind of words 172 172 00:08:47,940 --> 00:08:49,640 it will then make it easier 173 173 00:08:49,640 --> 00:08:53,530 to implement the feature in the future. 174 174 00:08:53,530 --> 00:08:57,140 So another one is private for example, 175 175 00:08:57,140 --> 00:09:02,117 so const private, just some number here 176 176 00:09:03,360 --> 00:09:05,363 and so this one will also not work. 177 177 00:09:06,370 --> 00:09:07,881 And that's because in the future 178 178 00:09:07,881 --> 00:09:12,640 there might be something called a private field and classes 179 179 00:09:12,640 --> 00:09:15,030 or in some other places even in the language 180 180 00:09:15,030 --> 00:09:18,290 and they might want to use this word for that. 181 181 00:09:18,290 --> 00:09:20,940 And so strict mode reserves these words 182 182 00:09:20,940 --> 00:09:23,746 so we cannot use them for variables. 183 183 00:09:23,746 --> 00:09:27,630 It's the same logic as this one 184 184 00:09:27,630 --> 00:09:29,840 so we cannot call a variable 'if'. 185 185 00:09:32,030 --> 00:09:32,863 Right? 186 186 00:09:32,863 --> 00:09:35,503 And that's because there's already an if statement. 187 187 00:09:37,170 --> 00:09:39,710 So here we get an unexpected token 'if' 188 188 00:09:39,710 --> 00:09:40,980 so that's like the rules 189 189 00:09:40,980 --> 00:09:42,370 that I explained to you in the beginning 190 190 00:09:42,370 --> 00:09:43,853 about naming variables. 191 191 00:09:45,360 --> 00:09:47,480 Okay? Alright. 192 192 00:09:47,480 --> 00:09:50,300 Now there are actually a lot of other changes 193 193 00:09:50,300 --> 00:09:53,740 that affect things that we haven't learned about yet. 194 194 00:09:53,740 --> 00:09:57,460 So, that's stuff like functions, objects, 195 195 00:09:57,460 --> 00:10:01,360 setting properties on primitive values and many more. 196 196 00:10:01,360 --> 00:10:03,760 And I will mention them in future lectures 197 197 00:10:03,760 --> 00:10:05,380 when the time comes. 198 198 00:10:05,380 --> 00:10:07,080 But everything that I'm gonna say 199 199 00:10:07,080 --> 00:10:09,400 in the rest of the course from now on 200 200 00:10:09,400 --> 00:10:13,260 we'll always assume that you have strict mode turned on. 201 201 00:10:13,260 --> 00:10:16,000 And so I will add this line of code here 202 202 00:10:16,000 --> 00:10:17,910 to all the scripts in the future 203 203 00:10:17,910 --> 00:10:19,965 and so you should do the same. 204 204 00:10:19,965 --> 00:10:22,500 Anyway with this out of the way 205 205 00:10:22,500 --> 00:10:24,623 lets now start learning functions. 17525

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