All language subtitles for 21 - Truthy and Falsy Values English

af Afrikaans
sq Albanian
am Amharic
ar Arabic Download
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
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 00:00:01,300 --> 00:00:03,620 ‫So, we talked about type conversion 2 00:00:03,620 --> 00:00:07,240 ‫and coercion to numbers and two strengths, 3 00:00:07,240 --> 00:00:10,150 ‫but I didn't mention booleans yet, right? 4 00:00:10,150 --> 00:00:12,360 ‫That's because we need to learn the concept 5 00:00:12,360 --> 00:00:15,490 ‫of truthy and falsy values first. 6 00:00:15,490 --> 00:00:17,703 ‫And so, that's what we're gonna do now. 7 00:00:19,090 --> 00:00:21,240 ‫So, let's get right into it. 8 00:00:21,240 --> 00:00:26,130 ‫So, falsy values are values that are not exactly false, 9 00:00:26,130 --> 00:00:29,360 ‫but will become false when we try to convert them 10 00:00:29,360 --> 00:00:31,150 ‫into a boolean. 11 00:00:31,150 --> 00:00:34,970 ‫And in JavaScript, there are only five falsy values. 12 00:00:34,970 --> 00:00:38,210 ‫And let me actually write them down here for you. 13 00:00:38,210 --> 00:00:43,210 ‫So, five falsy values and they are zero, the empty string, 14 00:00:47,050 --> 00:00:52,050 ‫undefined, null, and not a number, and that's it. 15 00:00:53,020 --> 00:00:56,120 ‫Of course, false itself is already false, 16 00:00:56,120 --> 00:01:00,070 ‫so we don't need to include it in the list of falsy values. 17 00:01:00,070 --> 00:01:03,530 ‫So again, all of these five values will be converted 18 00:01:03,530 --> 00:01:07,890 ‫to false when we attempt to convert them to a boolean. 19 00:01:07,890 --> 00:01:09,940 ‫They're not exactly false initially, 20 00:01:09,940 --> 00:01:14,000 ‫but they will become when converted to a boolean. 21 00:01:14,000 --> 00:01:17,130 ‫So, that's the definition of falsy values. 22 00:01:17,130 --> 00:01:20,500 ‫Everything else are our so-called truthy values. 23 00:01:20,500 --> 00:01:23,860 ‫So, values that will be converted to true, for example, 24 00:01:23,860 --> 00:01:27,025 ‫any number that is not zero or any string that is not 25 00:01:27,025 --> 00:01:30,060 ‫an empty string will be converted to true 26 00:01:30,060 --> 00:01:32,820 ‫when we attempt to convert them to a boolean. 27 00:01:32,820 --> 00:01:36,023 ‫And so, let's actually see that in practice. 28 00:01:37,270 --> 00:01:39,420 ‫So, just like with numbers and strings, 29 00:01:39,420 --> 00:01:44,420 ‫we can use the boolean function, boolean and then zero. 30 00:01:45,240 --> 00:01:50,240 ‫And we know that this one is a falsy value, right? 31 00:01:50,530 --> 00:01:53,020 ‫So, let's copy this and do this a couple of times 32 00:01:53,020 --> 00:01:54,533 ‫for some different things. 33 00:01:55,470 --> 00:01:57,913 ‫Let's do the same with undefined. 34 00:02:00,580 --> 00:02:05,580 ‫Let's do it now with a string and it's not an empty string. 35 00:02:07,060 --> 00:02:10,750 ‫And now, let's also do this with this empty object 36 00:02:10,750 --> 00:02:13,820 ‫and we will learn about objects in the next section. 37 00:02:13,820 --> 00:02:16,660 ‫So, this here is simply an empty object. 38 00:02:16,660 --> 00:02:19,453 ‫So, let's see what the result of this is gonna be. 39 00:02:22,290 --> 00:02:25,460 ‫And we see that indeed, converting to zero here 40 00:02:25,460 --> 00:02:29,000 ‫to a boolean resulted in false, 41 00:02:29,000 --> 00:02:31,800 ‫and the same for undefined, it's also false. 42 00:02:31,800 --> 00:02:35,770 ‫But then the string, Jonas is true, 43 00:02:35,770 --> 00:02:38,730 ‫and so that's why we say that any string that is not 44 00:02:38,730 --> 00:02:41,600 ‫an empty string is a truthy value. 45 00:02:41,600 --> 00:02:45,000 ‫And the same actually applies to this empty object here, 46 00:02:45,000 --> 00:02:47,420 ‫it's also a truthy value. 47 00:02:47,420 --> 00:02:50,093 ‫But if we tried to convert an empty string, 48 00:02:50,980 --> 00:02:53,630 ‫well, I think then you can already know 49 00:02:53,630 --> 00:02:57,890 ‫what the result will be, and it's gonna be false. 50 00:02:57,890 --> 00:03:00,810 ‫Again because it's a falsy value, 51 00:03:00,810 --> 00:03:03,470 ‫as we see up here in this list. 52 00:03:03,470 --> 00:03:06,270 ‫So, that's what truthy and falsy values are. 53 00:03:06,270 --> 00:03:09,880 ‫And this is how we could convert them to booleans. 54 00:03:09,880 --> 00:03:13,110 ‫But in practice, I actually never did this in my life. 55 00:03:13,110 --> 00:03:16,200 ‫I never used this function here in practice. 56 00:03:16,200 --> 00:03:18,690 ‫This was just to show you the concept of truthy 57 00:03:18,690 --> 00:03:20,520 ‫and falsely values. 58 00:03:20,520 --> 00:03:22,310 ‫So in practice, the conversion 59 00:03:22,310 --> 00:03:26,320 ‫to boolean is always implicit, not explicit, 60 00:03:26,320 --> 00:03:29,380 ‫or in other words is always typed coercion 61 00:03:29,380 --> 00:03:32,640 ‫that JavaScript does automatically behind the scenes. 62 00:03:32,640 --> 00:03:36,400 ‫But when exactly does JavaScript do type coercion 63 00:03:36,400 --> 00:03:37,700 ‫to booleans? 64 00:03:37,700 --> 00:03:40,410 ‫Well, it happens in two scenarios. 65 00:03:40,410 --> 00:03:44,420 ‫First, when using logical operators, and second in 66 00:03:44,420 --> 00:03:46,830 ‫a logical context, like for example, 67 00:03:46,830 --> 00:03:50,070 ‫in the condition of an if else statement. 68 00:03:50,070 --> 00:03:52,410 ‫And we're gonna talk about logical operators in 69 00:03:52,410 --> 00:03:54,920 ‫a future lecture, so let's now go back 70 00:03:54,920 --> 00:03:58,760 ‫to the if else statement and see how type coercion works 71 00:03:58,760 --> 00:04:00,890 ‫in the if else condition. 72 00:04:00,890 --> 00:04:04,540 ‫So, let's say that we have a money variable 73 00:04:06,810 --> 00:04:09,460 ‫and in the beginning we don't have any money. 74 00:04:09,460 --> 00:04:12,150 ‫So, we set it to zero here. 75 00:04:12,150 --> 00:04:14,890 ‫And now we can use what we just learned to test 76 00:04:14,890 --> 00:04:18,830 ‫if the person has currently any money or not, right? 77 00:04:18,830 --> 00:04:20,540 ‫So, let me actually write it first, 78 00:04:20,540 --> 00:04:23,550 ‫and then I'm gonna explain to you how it works. 79 00:04:23,550 --> 00:04:28,063 ‫So, if money then let's log to the console, 80 00:04:31,890 --> 00:04:34,463 ‫something like don't spend it all 81 00:04:38,870 --> 00:04:41,590 ‫and notice how I used the double quotes, 82 00:04:41,590 --> 00:04:44,313 ‫because in here I have a single quote for the don't. 83 00:04:45,550 --> 00:04:47,450 ‫And then we can also do an else block, 84 00:04:49,820 --> 00:04:53,540 ‫so for the case that the person does not have any money, 85 00:04:53,540 --> 00:04:58,540 ‫then I can just say, you should get a job. 86 00:05:01,150 --> 00:05:02,590 ‫Okay. 87 00:05:02,590 --> 00:05:05,630 ‫So, let's see if this works, and then I'm gonna explain 88 00:05:05,630 --> 00:05:07,640 ‫to you why it works. 89 00:05:07,640 --> 00:05:11,050 ‫So, indeed we got the you should get a job, 90 00:05:11,050 --> 00:05:14,240 ‫and so that's the else part here, right? 91 00:05:14,240 --> 00:05:18,350 ‫So, this here is the code that got executed, but why? 92 00:05:18,350 --> 00:05:21,930 ‫Well, we know that money is a number right now. 93 00:05:21,930 --> 00:05:25,410 ‫And this number is zero, but in the logical context 94 00:05:25,410 --> 00:05:27,890 ‫of an if else statement condition, 95 00:05:27,890 --> 00:05:30,300 ‫so that's right here in these parenthesis, 96 00:05:30,300 --> 00:05:34,580 ‫here JavaScript will try to coerce any value into a boolean. 97 00:05:34,580 --> 00:05:37,720 ‫So, no matter what we put here, if it's not a boolean, 98 00:05:37,720 --> 00:05:40,980 ‫JavaScript will try to convert it to a boolean. 99 00:05:40,980 --> 00:05:44,122 ‫And that happens using the truthy and falsy value rules 100 00:05:44,122 --> 00:05:47,060 ‫that we just discussed in the beginning. 101 00:05:47,060 --> 00:05:50,150 ‫So, we know that money here is zero, 102 00:05:50,150 --> 00:05:53,200 ‫but zero is a falsy value, right? 103 00:05:53,200 --> 00:05:56,550 ‫And so, in this logical environment here in this condition, 104 00:05:56,550 --> 00:05:59,280 ‫this number zero will be converted to false. 105 00:05:59,280 --> 00:06:01,570 ‫Just like it happened here 106 00:06:01,570 --> 00:06:05,650 ‫when we convert it manually zero to a boolean, right? 107 00:06:05,650 --> 00:06:09,510 ‫So here, this conversion to boolean returned false. 108 00:06:09,510 --> 00:06:12,700 ‫And here the exact same thing happens, money is zero, 109 00:06:12,700 --> 00:06:15,070 ‫and so zero is converted to false 110 00:06:15,070 --> 00:06:16,810 ‫because it's a falsy value. 111 00:06:16,810 --> 00:06:20,290 ‫And as a result, the else block here is executed, 112 00:06:20,290 --> 00:06:23,940 ‫and so on the console we see you should get a job. 113 00:06:23,940 --> 00:06:26,100 ‫Now, if we change this to something else 114 00:06:26,100 --> 00:06:29,610 ‫and it doesn't matter what number, let's say 100, 115 00:06:29,610 --> 00:06:32,760 ‫then 100 is a truthy value, 116 00:06:32,760 --> 00:06:36,000 ‫and so this means that this condition will be true. 117 00:06:36,000 --> 00:06:40,163 ‫And so the if block will be executed, wanna see? 118 00:06:41,380 --> 00:06:42,670 ‫Yes, indeed. 119 00:06:42,670 --> 00:06:44,873 ‫Now it says don't spend it all. 120 00:06:45,810 --> 00:06:47,973 ‫Great, I hope that made sense. 121 00:06:48,910 --> 00:06:51,940 ‫And we can test this in another situation 122 00:06:51,940 --> 00:06:55,000 ‫to make really sure that you understand it. 123 00:06:55,000 --> 00:06:58,390 ‫So, another use case for this truthy and falsy values is 124 00:06:58,390 --> 00:07:02,510 ‫to check if a variable is actually defined or not. 125 00:07:02,510 --> 00:07:05,250 ‫And this might seem like a weird use case, 126 00:07:05,250 --> 00:07:07,980 ‫but you will see later in the course that it actually makes 127 00:07:07,980 --> 00:07:10,080 ‫a lot of sense sometimes to test 128 00:07:10,080 --> 00:07:13,120 ‫if something actually exists or not. 129 00:07:13,120 --> 00:07:17,200 ‫So, let's define a variable here as height, 130 00:07:17,200 --> 00:07:20,070 ‫and then we can simply do this. 131 00:07:20,070 --> 00:07:25,070 ‫If height, then let's run this code, YAY! Height is defined. 132 00:07:35,350 --> 00:07:40,350 ‫But if not, well, then just say height is undefined. 133 00:07:44,540 --> 00:07:46,800 ‫Okay, so let's see the result. 134 00:07:46,800 --> 00:07:49,850 ‫And again, I will explain you why it works this way, 135 00:07:49,850 --> 00:07:52,860 ‫and maybe you can already guess why it works this way. 136 00:07:52,860 --> 00:07:55,800 ‫So, can you try to explain it to yourself maybe? 137 00:07:55,800 --> 00:07:57,000 ‫That would be a good idea 138 00:07:57,000 --> 00:07:59,830 ‫to make sure you actually got the concept. 139 00:07:59,830 --> 00:08:03,940 ‫But anyway, we know that height is undefined 140 00:08:03,940 --> 00:08:05,570 ‫in this moment, right? 141 00:08:05,570 --> 00:08:08,530 ‫Because we didn't assign it any value yet. 142 00:08:08,530 --> 00:08:10,780 ‫And we know from our little list here, 143 00:08:10,780 --> 00:08:13,410 ‫that undefined is a falsy value. 144 00:08:13,410 --> 00:08:18,100 ‫And therefore, just like before in the money here, 145 00:08:18,100 --> 00:08:21,150 ‫this height variable here in this logical context, 146 00:08:21,150 --> 00:08:23,960 ‫will automatically be converted to a boolean. 147 00:08:23,960 --> 00:08:26,890 ‫And since height is undefined and undefined is 148 00:08:26,890 --> 00:08:31,320 ‫a falsy value, height right here will be false. 149 00:08:31,320 --> 00:08:34,163 ‫Therefore, this block here will be executed. 150 00:08:35,430 --> 00:08:39,660 ‫But now if we assign something to it, no matter what it is, 151 00:08:39,660 --> 00:08:43,510 ‫then we will get the other result. 152 00:08:43,510 --> 00:08:48,390 ‫So, now it's true, and so now this block here is executed. 153 00:08:48,390 --> 00:08:52,270 ‫However, with this, we can actually run into a problem. 154 00:08:52,270 --> 00:08:56,240 ‫So, let's say that the height is zero for reason, 155 00:08:56,240 --> 00:08:58,620 ‫and that's a perfectly valid number, 156 00:08:58,620 --> 00:09:01,810 ‫but watch what happens when we run this code. 157 00:09:01,810 --> 00:09:04,860 ‫Now we get again, height is undefined. 158 00:09:04,860 --> 00:09:07,030 ‫So, why is that? 159 00:09:07,030 --> 00:09:09,220 ‫And to help you know the answer by now, 160 00:09:09,220 --> 00:09:13,180 ‫well it's because zero is also a falsy value. 161 00:09:13,180 --> 00:09:16,660 ‫And so this one will also trigger this else block. 162 00:09:16,660 --> 00:09:19,440 ‫But in this case, that's actually not what we want. 163 00:09:19,440 --> 00:09:21,210 ‫So, this is kind of a bug. 164 00:09:21,210 --> 00:09:23,490 ‫It's an error in our application 165 00:09:23,490 --> 00:09:25,420 ‫because here in this if else statement, 166 00:09:25,420 --> 00:09:27,900 ‫we didn't account for this scenario. 167 00:09:27,900 --> 00:09:29,420 ‫We only accounted for the scenario 168 00:09:29,420 --> 00:09:32,330 ‫that the height is either defined or not, 169 00:09:32,330 --> 00:09:36,210 ‫but we didn't think of the height being zero, right? 170 00:09:36,210 --> 00:09:38,780 ‫And so right now we get hightest undefined, 171 00:09:38,780 --> 00:09:40,890 ‫even though that's not true. 172 00:09:40,890 --> 00:09:43,500 ‫So, this is just to illustrate an example 173 00:09:43,500 --> 00:09:46,300 ‫that there can be problems using this approach. 174 00:09:46,300 --> 00:09:49,280 ‫However, we can fix this using logical operators, 175 00:09:49,280 --> 00:09:51,350 ‫which is gonna be very interesting, 176 00:09:51,350 --> 00:09:53,610 ‫and we will talk about that a little bit later 177 00:09:53,610 --> 00:09:55,220 ‫in the section. 178 00:09:55,220 --> 00:09:57,440 ‫But first in the next lecture, we need to talk 179 00:09:57,440 --> 00:10:01,203 ‫about equality operators, so stay tuned for that. 15171

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