All language subtitles for 007 Data Types

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
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
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
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
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-PT Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
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,580 --> 00:00:03,030 So in the last lecture, 2 00:00:03,030 --> 00:00:06,170 we talked about values and variables. 3 00:00:06,170 --> 00:00:08,830 Now in every programming language values 4 00:00:08,830 --> 00:00:10,700 can have different types. 5 00:00:10,700 --> 00:00:14,810 Depending on the type of data that we want them to hold. 6 00:00:14,810 --> 00:00:17,580 And we already saw strings and numbers 7 00:00:17,580 --> 00:00:19,990 but there are actually more data types. 8 00:00:19,990 --> 00:00:22,580 So let's now take a look at all the types 9 00:00:22,580 --> 00:00:24,533 that we have in JavaScript. 10 00:00:25,950 --> 00:00:28,500 And first of all, in JavaScript, 11 00:00:28,500 --> 00:00:31,470 every value is either an object 12 00:00:31,470 --> 00:00:35,830 which looks something like this or a primitive value. 13 00:00:35,830 --> 00:00:40,500 So a value is only a primitive when it's not an object 14 00:00:40,500 --> 00:00:42,950 and we will learn all about objects later 15 00:00:42,950 --> 00:00:46,943 but for now let's really focus on primitive data types. 16 00:00:48,500 --> 00:00:51,290 So there are seven primitive data types, 17 00:00:51,290 --> 00:00:55,390 number, string, bullion, undefined, null, 18 00:00:55,390 --> 00:00:57,810 symbol and big int. 19 00:00:57,810 --> 00:01:00,390 So let's look at them one by one. 20 00:01:00,390 --> 00:01:03,320 First, we have the number of data type 21 00:01:03,320 --> 00:01:06,760 and numbers are always so-called floating point numbers 22 00:01:06,760 --> 00:01:09,630 which means that they always have decimals 23 00:01:09,630 --> 00:01:12,950 even if we don't see them or don't define them. 24 00:01:12,950 --> 00:01:16,470 For example, the 23 value debt we have here 25 00:01:16,470 --> 00:01:20,100 is exactly like having 23.0. 26 00:01:20,100 --> 00:01:23,410 But they are both simply the number data type. 27 00:01:23,410 --> 00:01:25,410 In many other programming languages, 28 00:01:25,410 --> 00:01:28,160 you will find different data types for integers 29 00:01:28,160 --> 00:01:31,060 and for decimals but not in JavaScript. 30 00:01:31,060 --> 00:01:34,250 All numbers are simply of the type number. 31 00:01:34,250 --> 00:01:37,650 Okay, next up we have strengths 32 00:01:37,650 --> 00:01:40,770 which are simply a sequence of characters. 33 00:01:40,770 --> 00:01:45,210 And so they're just used for text as we already learned 34 00:01:45,210 --> 00:01:46,990 and always put them in quotes, 35 00:01:46,990 --> 00:01:49,990 no matter if double quotes or single quotes 36 00:01:49,990 --> 00:01:52,660 otherwise JavaScript will actually confuse them 37 00:01:52,660 --> 00:01:54,203 with variable names. 38 00:01:55,110 --> 00:01:59,330 The Boolean data type is essentially a logical type 39 00:01:59,330 --> 00:02:03,870 that can only take one of the logical values true or false. 40 00:02:03,870 --> 00:02:08,700 In other words, a Boolean is always either true or false. 41 00:02:08,700 --> 00:02:12,300 All right, we use Boolean values to take decisions 42 00:02:12,300 --> 00:02:15,250 with code as we will see later. 43 00:02:15,250 --> 00:02:18,080 And these are the three most important data types 44 00:02:18,080 --> 00:02:20,230 that we will deal with the most 45 00:02:20,230 --> 00:02:22,330 but there are still four more 46 00:02:22,330 --> 00:02:25,010 which might be a bit more confusing. 47 00:02:25,010 --> 00:02:29,830 So first, undefined is the value taken by a variable 48 00:02:29,830 --> 00:02:31,980 that is not yet defined. 49 00:02:31,980 --> 00:02:34,630 And the variable thats not yet defined 50 00:02:34,630 --> 00:02:37,300 is simply just a variable that we declared 51 00:02:37,300 --> 00:02:39,790 but without assigning a value 52 00:02:39,790 --> 00:02:43,200 for example like this children variable here. 53 00:02:43,200 --> 00:02:47,920 So basically we can say that undefined means empty value 54 00:02:47,920 --> 00:02:51,800 then there's also null which is actually pretty similar 55 00:02:51,800 --> 00:02:54,550 because it also means empty value 56 00:02:54,550 --> 00:02:57,210 but it's used in different circumstances. 57 00:02:57,210 --> 00:02:59,950 But for now, don't worry about the details. 58 00:02:59,950 --> 00:03:04,910 I just want you to know that null also exists for now, okay. 59 00:03:04,910 --> 00:03:09,833 Anyway, next we have symbol which was introduced in ES2015 60 00:03:11,090 --> 00:03:13,960 and this data type is not really useful for us, 61 00:03:13,960 --> 00:03:16,840 it's simply defines a value that is unique 62 00:03:16,840 --> 00:03:18,620 and cannot be changed. 63 00:03:18,620 --> 00:03:20,500 And we will talk about this briefly 64 00:03:20,500 --> 00:03:22,890 by the end of the course. 65 00:03:22,890 --> 00:03:27,850 Finally, starting in ES2020 there is also BigInt 66 00:03:27,850 --> 00:03:30,730 which is for integers that are too large 67 00:03:30,730 --> 00:03:33,460 to be represented by the number type. 68 00:03:33,460 --> 00:03:37,020 So basically it's another tire before numbers 69 00:03:37,020 --> 00:03:40,420 and we will talk about this one in another section. 70 00:03:40,420 --> 00:03:45,050 So these are the seven primitive data types in JavaScript. 71 00:03:45,050 --> 00:03:49,470 But there is another fundamental thing to know about types 72 00:03:49,470 --> 00:03:51,640 which is the fact that JavaScript 73 00:03:51,640 --> 00:03:54,790 has a feature called dynamic typing. 74 00:03:54,790 --> 00:03:57,810 This means that when you create a new variable, 75 00:03:57,810 --> 00:04:01,260 you do not have to manually define the data type 76 00:04:01,260 --> 00:04:03,520 of the value that it contains. 77 00:04:03,520 --> 00:04:05,205 In many other programming languages, 78 00:04:05,205 --> 00:04:09,010 you actually have to do that but not in JavaScript. 79 00:04:09,010 --> 00:04:12,020 Instead, Java script automatically determines 80 00:04:12,020 --> 00:04:16,660 the data type of a value when it's stored into a variable. 81 00:04:16,660 --> 00:04:19,930 And this distinction between value and variable 82 00:04:19,930 --> 00:04:22,880 is pretty important because in JavaScript, 83 00:04:22,880 --> 00:04:27,130 it's the value that has a type, not the variable. 84 00:04:27,130 --> 00:04:31,020 So variables simply store values that have a type. 85 00:04:31,020 --> 00:04:35,170 Many people don't know about this detail or just don't care 86 00:04:35,170 --> 00:04:37,660 but this is how it actually works. 87 00:04:37,660 --> 00:04:41,041 Now another important application of dynamic typing 88 00:04:41,041 --> 00:04:44,930 is that later in our code, we can assign a new value 89 00:04:44,930 --> 00:04:47,930 with a different data type to the same variable 90 00:04:47,930 --> 00:04:49,300 without a problem. 91 00:04:49,300 --> 00:04:53,090 For example, variable x can initially be a number 92 00:04:53,090 --> 00:04:56,720 and then later a string, that's not a problem at all. 93 00:04:56,720 --> 00:04:59,170 And this can of course be very useful 94 00:04:59,170 --> 00:05:02,310 but it can also be the source of some difficult 95 00:05:02,310 --> 00:05:06,630 to find books which means errors in our code. 96 00:05:06,630 --> 00:05:10,643 All right, so let's not actually see these things in action. 97 00:05:12,120 --> 00:05:14,550 But before we talk about data types, 98 00:05:14,550 --> 00:05:17,670 let's quickly talk about code commenting. 99 00:05:17,670 --> 00:05:21,390 So in programming, we use comments to literally come 100 00:05:21,390 --> 00:05:25,410 and code or to deactivate code without deleting it. 101 00:05:25,410 --> 00:05:29,270 For example, here, I could write a single line comment 102 00:05:29,270 --> 00:05:34,270 using // and then I can describe what this code is doing. 103 00:05:34,400 --> 00:05:39,400 For example here, I can say, variable name conventions 104 00:05:41,340 --> 00:05:44,199 and JavaScript will completely ignore anything 105 00:05:44,199 --> 00:05:45,750 that is a comment. 106 00:05:45,750 --> 00:05:50,750 So anything that comes after // like this, okay. 107 00:05:51,097 --> 00:05:54,260 And this can be really useful to kind of divide 108 00:05:54,260 --> 00:05:56,610 or code into different sections 109 00:05:56,610 --> 00:05:59,450 and to explain what different pieces of code 110 00:05:59,450 --> 00:06:01,590 are actually doing in our code. 111 00:06:01,590 --> 00:06:04,460 So that's a very useful application of comments 112 00:06:04,460 --> 00:06:07,880 but another one is to simply comment out code 113 00:06:07,880 --> 00:06:11,400 that we don't want to be executed for some reason. 114 00:06:11,400 --> 00:06:14,170 For example, let's say we don't want this code here 115 00:06:14,170 --> 00:06:17,960 to be executed but we also don't want to delete it. 116 00:06:17,960 --> 00:06:21,450 So we can simply comment it out like this. 117 00:06:21,450 --> 00:06:23,910 And so if I save it and then 118 00:06:23,910 --> 00:06:26,513 when I reload this 61 should be gone. 119 00:06:27,900 --> 00:06:30,830 So you see, that's because JavaScript 120 00:06:30,830 --> 00:06:34,230 is now ignoring this code, it's just a comment. 121 00:06:34,230 --> 00:06:35,650 But since we didn't delete it, 122 00:06:35,650 --> 00:06:37,840 we can of course bring it back. 123 00:06:37,840 --> 00:06:42,020 So we can just delete it and then it's back to normal. 124 00:06:42,020 --> 00:06:45,300 Now in VS code we can also automatically create comments 125 00:06:45,300 --> 00:06:47,823 using the command slash shortcut. 126 00:06:49,010 --> 00:06:52,050 So that's command or control slash to turn on 127 00:06:52,050 --> 00:06:54,510 and then again to turn off. 128 00:06:54,510 --> 00:06:56,460 So that single line comments 129 00:06:56,460 --> 00:06:58,170 but we can go even further 130 00:06:58,170 --> 00:07:01,090 and also create multi line comments. 131 00:07:01,090 --> 00:07:04,780 And to do that, we do it like this. 132 00:07:04,780 --> 00:07:09,560 We start a multi line comment using slash and an asterisk 133 00:07:09,560 --> 00:07:13,810 and then we ended with the asterisk or star 134 00:07:13,810 --> 00:07:16,710 and then the slash and whatever comes here 135 00:07:16,710 --> 00:07:18,910 is then a normal code. 136 00:07:18,910 --> 00:07:21,720 Okay, and with this, I effectively got rid 137 00:07:21,720 --> 00:07:25,560 of this first code that we typed in the first lecture 138 00:07:25,560 --> 00:07:27,380 but without deleting it. 139 00:07:27,380 --> 00:07:31,460 And so I can keep it here basically as a reference. 140 00:07:31,460 --> 00:07:33,260 All right, and so that's what I'm gonna do 141 00:07:33,260 --> 00:07:34,610 in every lecture now. 142 00:07:34,610 --> 00:07:38,360 We'll always kind of get rid of the previous code 143 00:07:38,360 --> 00:07:41,163 by using a multi line comment like this. 144 00:07:42,070 --> 00:07:45,120 But now let's get back to the topic of this lecture 145 00:07:45,120 --> 00:07:47,180 which is data types. 146 00:07:47,180 --> 00:07:48,660 So in a previous lecture, 147 00:07:48,660 --> 00:07:52,640 we already saw numbers and strengths, right. 148 00:07:52,640 --> 00:07:56,100 So here we have a value which has a number 149 00:07:56,100 --> 00:07:59,540 and here we have a value which is a string. 150 00:07:59,540 --> 00:08:02,170 So nothing new, right. 151 00:08:02,170 --> 00:08:05,130 That's will be learned at the beginning of the video 152 00:08:05,130 --> 00:08:08,230 but we also talked about booleans, right? 153 00:08:08,230 --> 00:08:12,760 And so Boolean is a value that can only be true or false. 154 00:08:12,760 --> 00:08:14,473 And so if I write true, 155 00:08:15,870 --> 00:08:19,180 that is then automatically a Boolean value 156 00:08:19,180 --> 00:08:21,133 which is in this case true. 157 00:08:22,030 --> 00:08:25,290 Okay, and actually I can also lock that to the console 158 00:08:30,153 --> 00:08:31,890 and then here you get true 159 00:08:31,890 --> 00:08:33,770 and you can see that it's not a string 160 00:08:33,770 --> 00:08:36,250 because strings are printed in white 161 00:08:36,250 --> 00:08:39,570 and this value is printed in this pink. 162 00:08:39,570 --> 00:08:43,030 And so it' actually really a Boolean value. 163 00:08:43,030 --> 00:08:47,780 And of course we can also store Booleans in variables. 164 00:08:47,780 --> 00:08:52,780 So let's say Java script is fun using 165 00:08:54,440 --> 00:08:57,400 the camel case notation that we learned about before 166 00:08:58,370 --> 00:09:00,803 and done, set it to true. 167 00:09:03,040 --> 00:09:07,140 And now we can log JavaScriptIsFun instead 168 00:09:08,240 --> 00:09:10,700 but of course the variable declaration here needs 169 00:09:10,700 --> 00:09:12,860 to happen before the lock. 170 00:09:12,860 --> 00:09:15,810 And that's because JavaScript programs are executed 171 00:09:15,810 --> 00:09:19,260 from top to bottom like this 172 00:09:19,260 --> 00:09:22,030 and more about that a bit later, okay. 173 00:09:22,030 --> 00:09:24,630 What matters is that this need to be at the end. 174 00:09:24,630 --> 00:09:27,600 So let's cut it and put it here 175 00:09:28,620 --> 00:09:31,703 and also get rid of this one, save it. 176 00:09:33,400 --> 00:09:35,410 And here we still get true. 177 00:09:35,410 --> 00:09:37,590 And so here we created a nice 178 00:09:37,590 --> 00:09:42,590 and descriptive variable name holding a Boolean value. 179 00:09:43,260 --> 00:09:45,460 And remember that it's actually the value 180 00:09:45,460 --> 00:09:49,490 that holds the data type and not the variable 181 00:09:49,490 --> 00:09:52,200 because I could now actually go ahead and change this 182 00:09:52,200 --> 00:09:54,600 to a value with another type. 183 00:09:54,600 --> 00:09:57,000 And actually I will do that in a second 184 00:09:57,000 --> 00:09:58,700 but for now let's take a look 185 00:09:58,700 --> 00:10:01,920 at a special operator called type of. 186 00:10:01,920 --> 00:10:04,989 So type of it's an operator just like the plus 187 00:10:04,989 --> 00:10:06,989 or the minus operator 188 00:10:06,989 --> 00:10:11,050 that we can use to show the type of a value. 189 00:10:11,050 --> 00:10:12,433 So let me show you how. 190 00:10:16,680 --> 00:10:20,160 So again, we use console.log because we actually want to see 191 00:10:20,160 --> 00:10:23,728 the result of this operator in the console. 192 00:10:23,728 --> 00:10:28,728 So type of and then let's say just true, okay. 193 00:10:30,050 --> 00:10:32,730 And more about how operators actually work 194 00:10:32,730 --> 00:10:35,760 and what they are a bit later in the section. 195 00:10:35,760 --> 00:10:39,600 For now, let's just see what happens when we reload this 196 00:10:40,640 --> 00:10:43,060 and we see that it's a Boolean. 197 00:10:43,060 --> 00:10:47,100 So just as I said, the result of using this operator here 198 00:10:47,100 --> 00:10:49,780 on a value will be a new value 199 00:10:49,780 --> 00:10:54,780 which is a string with the type of this value here, okay. 200 00:10:55,410 --> 00:10:57,143 So let's do that again here. 201 00:10:57,143 --> 00:10:59,290 I will copy it just a couple of times 202 00:11:02,460 --> 00:11:05,330 just like this to make it a bit faster. 203 00:11:05,330 --> 00:11:08,337 And so here let's use JavaScriptIsFun. 204 00:11:09,990 --> 00:11:12,270 And so this should also be a Boolean 205 00:11:12,270 --> 00:11:15,710 but just to make sure. 206 00:11:15,710 --> 00:11:20,710 Here let's now use a number and finally a string. 207 00:11:23,030 --> 00:11:24,530 So just to prove you 208 00:11:24,530 --> 00:11:28,000 that these are actually numbers and strings. 209 00:11:28,000 --> 00:11:32,160 All right, and indeed we see that JavaScript 210 00:11:32,160 --> 00:11:37,160 is fun is a Boolean, 23 is a number and Jonas is a string. 211 00:11:38,910 --> 00:11:40,890 And speaking about strings, 212 00:11:40,890 --> 00:11:44,380 I just want to quickly emphasize that we really always need 213 00:11:44,380 --> 00:11:48,961 to use quotes in order to create a string, okay. 214 00:11:48,961 --> 00:11:51,660 Let's actually show that here in the console. 215 00:11:51,660 --> 00:11:54,540 So we can use double quotes or single quotes 216 00:11:54,540 --> 00:11:58,530 but we really do need quotes in order to create a string. 217 00:11:58,530 --> 00:12:03,530 So Jonah's, for example is a string, okay, 218 00:12:03,640 --> 00:12:06,090 and so is Jonah's with single quotes 219 00:12:07,230 --> 00:12:11,280 but if we do it like this then it's not gonna work. 220 00:12:11,280 --> 00:12:15,320 So it needs to be the same at the beginning and the end. 221 00:12:15,320 --> 00:12:17,340 but without any quotes at all, 222 00:12:17,340 --> 00:12:21,230 JavaScript will see this as a variable. 223 00:12:21,230 --> 00:12:23,690 And so then we get this reference error 224 00:12:23,690 --> 00:12:27,010 which is saying that Jonah's is not defined. 225 00:12:27,010 --> 00:12:29,930 And that's because it's looking for a variable 226 00:12:29,930 --> 00:12:31,340 that does not exist. 227 00:12:31,340 --> 00:12:35,090 We never declared a variable called Jonas, right. 228 00:12:35,090 --> 00:12:38,390 And so that's why we get this error here. 229 00:12:38,390 --> 00:12:41,600 So when you need a string, don't forget the quotes. 230 00:12:41,600 --> 00:12:45,440 This is a mistake that I see beginners make all the time. 231 00:12:45,440 --> 00:12:48,890 And so really be careful about that. 232 00:12:48,890 --> 00:12:53,890 Now moving on, let's actually see dynamic typing in action. 233 00:12:53,940 --> 00:12:56,473 And remember that dynamic typing simply means 234 00:12:56,473 --> 00:13:00,003 that we can easily change the type of a value 235 00:13:00,003 --> 00:13:02,360 that is hold by a variable. 236 00:13:02,360 --> 00:13:05,190 So that sounds a bit fancy 237 00:13:05,190 --> 00:13:07,513 but it's really as simple as this. 238 00:13:08,760 --> 00:13:13,760 So we already have a variable called JavaScriptIsFun 239 00:13:14,270 --> 00:13:17,300 and so let's now reassign that variable. 240 00:13:17,300 --> 00:13:20,140 So we do that like this. 241 00:13:20,140 --> 00:13:24,452 So we write the name of the variable then equal 242 00:13:24,452 --> 00:13:27,270 and then a new value. 243 00:13:27,270 --> 00:13:29,830 And what matters is that we do not write 244 00:13:29,830 --> 00:13:31,890 the let here again. 245 00:13:31,890 --> 00:13:33,570 So this let keyword. 246 00:13:33,570 --> 00:13:36,230 So the first time that we declare a new variable 247 00:13:36,230 --> 00:13:38,610 we need to do it using let 248 00:13:38,610 --> 00:13:42,330 but then when we want to change the value of the variable, 249 00:13:42,330 --> 00:13:46,830 we simply write it again like this but without the let. 250 00:13:46,830 --> 00:13:49,530 So we simply assign a new value here 251 00:13:49,530 --> 00:13:52,050 to this already existing variable. 252 00:13:52,050 --> 00:13:55,000 And this is actually the first time that we did that 253 00:13:55,000 --> 00:13:58,020 and so it's important to understand what happened here. 254 00:13:58,020 --> 00:14:03,020 Okay, so again, we first declared a new variable 255 00:14:03,360 --> 00:14:07,240 with this name and assigned it this true value. 256 00:14:07,240 --> 00:14:10,690 And then down here, we changed the value data's 257 00:14:10,690 --> 00:14:11,883 in the variable. 258 00:14:12,720 --> 00:14:15,610 So using the box analogy from before, 259 00:14:15,610 --> 00:14:18,980 it's like initially putting a book in a box 260 00:14:18,980 --> 00:14:22,100 and then later taking the book out of the box 261 00:14:22,100 --> 00:14:25,160 and instead putting a phone in a box. 262 00:14:25,160 --> 00:14:29,170 And so just like here, we changed the content of the box. 263 00:14:29,170 --> 00:14:32,497 In our example here, we changed from true 264 00:14:32,497 --> 00:14:35,663 to the string of yes. 265 00:14:36,760 --> 00:14:41,360 Okay, and now let's just grab this piece of code here 266 00:14:41,360 --> 00:14:45,560 so that we can see that dynamic typing actually works. 267 00:14:45,560 --> 00:14:47,293 So if I reload now, 268 00:14:48,520 --> 00:14:50,440 then let's see. 269 00:14:50,440 --> 00:14:54,550 Well, we get here from line 34. 270 00:14:54,550 --> 00:14:56,823 Let's actually simplify this a little bit. 271 00:14:58,170 --> 00:15:01,860 So commenting out this code and I'm using command 272 00:15:01,860 --> 00:15:06,860 or control slash, that's a reload again. 273 00:15:08,170 --> 00:15:12,040 And so you'll see that initially the type of JavaScript 274 00:15:12,040 --> 00:15:15,010 is fun is a bullion, right. 275 00:15:15,010 --> 00:15:18,460 But then we change it to a string down here. 276 00:15:18,460 --> 00:15:20,920 And so indeed when we then test the type 277 00:15:20,920 --> 00:15:24,480 of the variable again in line 39, 278 00:15:24,480 --> 00:15:26,810 then we get the result of a string. 279 00:15:26,810 --> 00:15:31,020 All right, and that basically is dynamic typing. 280 00:15:31,020 --> 00:15:35,000 Great, and now let's see an example of undefined. 281 00:15:35,000 --> 00:15:38,560 So remember that a number string and bullion 282 00:15:38,560 --> 00:15:40,720 are the most used data types 283 00:15:40,720 --> 00:15:43,980 but there are more like undefined and null 284 00:15:43,980 --> 00:15:47,250 and also symbol in BigInt but in this lecture, 285 00:15:47,250 --> 00:15:51,370 I'm only gonna talk about the three most important ones 286 00:15:51,370 --> 00:15:54,290 and then also undefined and null. 287 00:15:54,290 --> 00:15:57,410 So remember that undefined is the value taken 288 00:15:57,410 --> 00:16:00,600 by a variable that is not yet defined. 289 00:16:00,600 --> 00:16:04,430 So basically undefined means an empty value. 290 00:16:04,430 --> 00:16:08,490 So it's perfectly legal in JavaScript to do this. 291 00:16:08,490 --> 00:16:11,713 So to define a variable without value. 292 00:16:12,930 --> 00:16:17,410 And if we now take a look at this variable, 293 00:16:18,750 --> 00:16:21,320 then we should see undefined. 294 00:16:21,320 --> 00:16:23,230 And actually let's also check the type 295 00:16:24,250 --> 00:16:27,623 so that I can show you something, here. 296 00:16:33,540 --> 00:16:37,690 Okay, and so you get both undefined. 297 00:16:37,690 --> 00:16:40,680 What this means is that whenever we declare 298 00:16:40,680 --> 00:16:43,960 an empty variable, the value of the variable 299 00:16:43,960 --> 00:16:47,250 will be undefined, enter type of the variable 300 00:16:47,250 --> 00:16:49,400 is also undefined. 301 00:16:49,400 --> 00:16:53,460 Now that maybe sounds a bit confusing but it's really not. 302 00:16:53,460 --> 00:16:57,260 So simply put undefined is both the value 303 00:16:57,260 --> 00:17:00,040 and the type of the value and undefined 304 00:17:00,040 --> 00:17:03,210 is different than other types in this way. 305 00:17:03,210 --> 00:17:05,460 But this detail is not really important. 306 00:17:05,460 --> 00:17:07,860 What matters is that when you declare 307 00:17:07,860 --> 00:17:10,190 an empty variable like this 308 00:17:10,190 --> 00:17:13,190 it will automatically hold the value of undefined. 309 00:17:13,190 --> 00:17:16,000 And that's why we get undefined here. 310 00:17:16,000 --> 00:17:20,343 Then just like before, we can also reassign 311 00:17:20,343 --> 00:17:21,993 this variable basically. 312 00:17:23,740 --> 00:17:28,330 So we can now go ahead and say year 1991. 313 00:17:28,330 --> 00:17:30,830 And once more without the let 314 00:17:30,830 --> 00:17:33,730 because we are not creating a new variable, 315 00:17:33,730 --> 00:17:37,350 we are simply assigning a new value to you. 316 00:17:37,350 --> 00:17:41,630 So it used to be undefined, right, as we just discussed 317 00:17:41,630 --> 00:17:44,820 and now I'm changing it to 1991. 318 00:17:44,820 --> 00:17:49,200 And so if I test for the type now again, 319 00:17:49,200 --> 00:17:52,470 it should now be a number, right. 320 00:17:52,470 --> 00:17:54,050 So let's check that. 321 00:17:54,050 --> 00:17:59,050 And indeed we can again see the effect of dynamic typing. 322 00:17:59,130 --> 00:18:03,270 Great, and now finally just to quickly finish, 323 00:18:03,270 --> 00:18:05,800 I want to show you an error that exists 324 00:18:05,800 --> 00:18:08,060 in the type of operator. 325 00:18:08,060 --> 00:18:11,010 So all I'm going to do here is to quickly say, 326 00:18:11,010 --> 00:18:15,640 console.log type of null. 327 00:18:17,120 --> 00:18:21,090 So remember that null is just another data type 328 00:18:21,090 --> 00:18:23,010 and it's similar to undefined. 329 00:18:23,010 --> 00:18:26,210 And it's also similar in the fact that both the value 330 00:18:26,210 --> 00:18:30,330 and the type of the value are null, okay. 331 00:18:30,330 --> 00:18:35,330 Now about this bug, Java script says that a type of null 332 00:18:35,820 --> 00:18:40,050 is an object and this doesn't make any sense at all. 333 00:18:40,050 --> 00:18:45,050 And so this is regarded as a buck or an error in JavaScript. 334 00:18:45,140 --> 00:18:49,800 However, this bug is never corrected for legacy reasons 335 00:18:49,800 --> 00:18:52,620 but now it's of course not an object. 336 00:18:52,620 --> 00:18:54,360 This should return null 337 00:18:54,360 --> 00:18:58,230 just as type of undefined returns undefined. 338 00:18:58,230 --> 00:19:01,670 So just keep that in mind when working with type of 339 00:19:01,670 --> 00:19:04,510 but we will also come back to this later in the course 340 00:19:04,510 --> 00:19:08,270 to make sure that you don't create any accidental bugs 341 00:19:08,270 --> 00:19:11,130 because of this weird behavior. 342 00:19:11,130 --> 00:19:12,730 Okay, and that's all I had 343 00:19:12,730 --> 00:19:16,653 to tell you about data types in JavaScript. 27679

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