Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,690 --> 00:00:03,280
‫Let's now take a look at
2
00:00:03,280 --> 00:00:06,270
‫the three different ways of declaring variables
3
00:00:06,270 --> 00:00:07,543
‫in JavaScript.
4
00:00:08,810 --> 00:00:11,910
‫So, up until this point, we have always used
5
00:00:11,910 --> 00:00:14,890
‫the let keyword to declare variables.
6
00:00:14,890 --> 00:00:18,650
‫However, there are also const and var.
7
00:00:18,650 --> 00:00:22,570
‫Now, let and const were introduced in ES6,
8
00:00:22,570 --> 00:00:25,270
‫and so they are modern JavaScript.
9
00:00:25,270 --> 00:00:29,960
‫While the var keyword is the old way of declaring variables.
10
00:00:29,960 --> 00:00:33,340
‫So, let's learn how they are different and which one to use
11
00:00:33,340 --> 00:00:35,640
‫in which situations.
12
00:00:35,640 --> 00:00:40,300
‫And let's, again, start by getting rid of this code.
13
00:00:40,300 --> 00:00:43,680
‫Actually, all I will do is move this to the end
14
00:00:44,540 --> 00:00:47,470
‫and in the future, I will just do this before recording
15
00:00:47,470 --> 00:00:48,303
‫the next video.
16
00:00:49,530 --> 00:00:53,690
‫So anyway, we use the let keyword to declare variables
17
00:00:53,690 --> 00:00:57,291
‫that can change later so basically during the execution
18
00:00:57,291 --> 00:01:01,890
‫of our program and that's exactly what we did here.
19
00:01:01,890 --> 00:01:05,460
‫So, we used let to declare JavaScript is fun,
20
00:01:05,460 --> 00:01:09,693
‫and then we changed that later from true to yes.
21
00:01:11,140 --> 00:01:16,070
‫But for example, or another example I would say is
22
00:01:17,290 --> 00:01:22,030
‫let's set the age to 30 at one point of the program.
23
00:01:22,030 --> 00:01:24,240
‫And then in another point of the program,
24
00:01:24,240 --> 00:01:27,040
‫we can change it to something else.
25
00:01:27,040 --> 00:01:31,000
‫For example, when the person turns 31
26
00:01:31,000 --> 00:01:35,160
‫and then the age of course changes from 30 to 31.
27
00:01:35,160 --> 00:01:38,250
‫And so, it's perfectly okay to declare a variable
28
00:01:38,250 --> 00:01:41,210
‫with let at one point in the program,
29
00:01:41,210 --> 00:01:44,580
‫and then later assign a new value to it.
30
00:01:44,580 --> 00:01:48,400
‫In technical terms, we call this reassigning a value to
31
00:01:48,400 --> 00:01:51,638
‫a variable, or also we say that we mutate
32
00:01:51,638 --> 00:01:54,760
‫the age variable in this case.
33
00:01:54,760 --> 00:01:57,790
‫So, it was 30 and now it's 31,
34
00:01:57,790 --> 00:02:01,200
‫and so we mutated the variable, okay?
35
00:02:01,200 --> 00:02:04,420
‫So, that's a term that you will hear all the time
36
00:02:04,420 --> 00:02:06,640
‫in the JavaScript world.
37
00:02:06,640 --> 00:02:08,940
‫So, when we need to mutate a variable,
38
00:02:08,940 --> 00:02:12,340
‫that's the perfect use case for using let
39
00:02:12,340 --> 00:02:15,170
‫and that also counts for the case that we want
40
00:02:15,170 --> 00:02:17,040
‫to declare empty variables.
41
00:02:17,040 --> 00:02:20,150
‫So for example, as we did here, where we declared
42
00:02:20,150 --> 00:02:24,430
‫an empty year and then later reassigned that variable
43
00:02:24,430 --> 00:02:28,600
‫to 1991, and sometimes we actually do this in practice.
44
00:02:28,600 --> 00:02:31,950
‫For example, when we want to declare all the variables
45
00:02:31,950 --> 00:02:33,560
‫at the top of a file,
46
00:02:33,560 --> 00:02:37,450
‫but only assign actual values to them later in the program,
47
00:02:37,450 --> 00:02:40,160
‫for example, based on some condition.
48
00:02:40,160 --> 00:02:43,920
‫Now, on the other hand, we use the const keyword
49
00:02:43,920 --> 00:02:47,280
‫to declare variables that are not supposed to change
50
00:02:47,280 --> 00:02:49,810
‫at any point in the future.
51
00:02:49,810 --> 00:02:54,250
‫So, the value in a const variable cannot be changed.
52
00:02:54,250 --> 00:02:59,250
‫For example, let's say the birth year, 1991 for example.
53
00:03:05,820 --> 00:03:10,820
‫If we then tried to reassign that let's say to 1990,
54
00:03:11,190 --> 00:03:12,473
‫it should not work.
55
00:03:13,570 --> 00:03:18,400
‫So, let's test that, and indeed we get a type error.
56
00:03:18,400 --> 00:03:22,210
‫So, assignment to constant variable.
57
00:03:22,210 --> 00:03:25,470
‫And so, that's exactly what the const keyword does.
58
00:03:25,470 --> 00:03:28,770
‫It creates a variable that we cannot reassign
59
00:03:28,770 --> 00:03:32,250
‫or in technical terms, an immutable variable.
60
00:03:32,250 --> 00:03:36,580
‫So, a variable that cannot be mutated, okay?
61
00:03:36,580 --> 00:03:39,500
‫And the birth year is a perfect example for that
62
00:03:39,500 --> 00:03:43,850
‫because in fact, the birth year of a person can never change
63
00:03:43,850 --> 00:03:46,470
‫while the age of course can change.
64
00:03:46,470 --> 00:03:49,850
‫And so that's why we used let for the age
65
00:03:49,850 --> 00:03:53,100
‫and const for the birth year, okay?
66
00:03:53,100 --> 00:03:54,790
‫That makes sense?
67
00:03:54,790 --> 00:03:56,940
‫Now the fact that variables created
68
00:03:56,940 --> 00:03:59,840
‫with const are immutable also means
69
00:03:59,840 --> 00:04:03,720
‫that we cannot declare empty const variables.
70
00:04:03,720 --> 00:04:07,163
‫For example, this is not legal.
71
00:04:08,390 --> 00:04:11,500
‫So, let's comment out this one here, again with command
72
00:04:11,500 --> 00:04:15,253
‫or control slash so that it doesn't get in our way here.
73
00:04:17,270 --> 00:04:19,750
‫And then reload, and then we get
74
00:04:19,750 --> 00:04:23,760
‫an error missing initializer in const declaration.
75
00:04:23,760 --> 00:04:26,010
‫And so this error message means that
76
00:04:26,010 --> 00:04:30,360
‫when using const, we need basically an initial value.
77
00:04:30,360 --> 00:04:31,973
‫Alright, so just like here.
78
00:04:33,050 --> 00:04:36,550
‫Now with these two different ways of declaring variables,
79
00:04:36,550 --> 00:04:39,460
‫you will probably ask, should I use let,
80
00:04:39,460 --> 00:04:42,990
‫or should I use const to declare a new variable?
81
00:04:42,990 --> 00:04:46,850
‫Well, as a best practice for writing clean code,
82
00:04:46,850 --> 00:04:51,350
‫I always recommend to use const by default and let only
83
00:04:51,350 --> 00:04:54,850
‫when you are really sure that the variable needs to change
84
00:04:54,850 --> 00:04:57,200
‫at some point in the future.
85
00:04:57,200 --> 00:04:59,240
‫For example, when you have a variable
86
00:04:59,240 --> 00:05:03,260
‫that's really never supposed to change like this birth year,
87
00:05:03,260 --> 00:05:05,580
‫you should always use const.
88
00:05:05,580 --> 00:05:07,100
‫Also, if you are sure
89
00:05:07,100 --> 00:05:10,890
‫that the age variable is never changing inside your program,
90
00:05:10,890 --> 00:05:13,940
‫you should declare it using const as well.
91
00:05:13,940 --> 00:05:16,650
‫The reason for this is that it's a good practice
92
00:05:16,650 --> 00:05:19,390
‫to have as little variable mutations
93
00:05:19,390 --> 00:05:22,040
‫or variable changes as possible
94
00:05:22,040 --> 00:05:25,650
‫because changing variables introduces a potential
95
00:05:25,650 --> 00:05:27,090
‫to create bugs.
96
00:05:27,090 --> 00:05:30,010
‫So, basically errors in your code.
97
00:05:30,010 --> 00:05:34,560
‫So again, by default, always just use const and let,
98
00:05:34,560 --> 00:05:37,500
‫when you're sure that the value of the variable needs
99
00:05:37,500 --> 00:05:40,570
‫to change at some point in your code.
100
00:05:40,570 --> 00:05:44,270
‫And so from now on, I will probably use the const way
101
00:05:44,270 --> 00:05:48,090
‫of declaring variables as much as possible.
102
00:05:48,090 --> 00:05:50,810
‫Now, there's also a third way in JavaScript
103
00:05:50,810 --> 00:05:54,610
‫of declaring variables, which is the var keyword,
104
00:05:54,610 --> 00:05:58,910
‫but this one should actually be completely avoided, okay?
105
00:05:58,910 --> 00:06:01,760
‫However, we should still know how it works
106
00:06:01,760 --> 00:06:05,400
‫for legacy reasons because you will see this maybe
107
00:06:05,400 --> 00:06:08,770
‫in older code basis or some older tutorials
108
00:06:08,770 --> 00:06:10,670
‫that you'll find online.
109
00:06:10,670 --> 00:06:13,083
‫So, let's take a look at how it works.
110
00:06:14,330 --> 00:06:19,230
‫So, var is basically the old way of defining variables,
111
00:06:19,230 --> 00:06:21,140
‫prior to ES6.
112
00:06:21,140 --> 00:06:24,280
‫And at first sight, it works actually pretty much
113
00:06:24,280 --> 00:06:25,963
‫the same as let.
114
00:06:27,180 --> 00:06:32,180
‫So, we can write var job equals programmer,
115
00:06:34,250 --> 00:06:37,880
‫and then just like with let, we can change the value of
116
00:06:37,880 --> 00:06:41,893
‫the variable later, just like this.
117
00:06:43,270 --> 00:06:47,433
‫Let's take this one out and let's just reload,
118
00:06:48,370 --> 00:06:50,000
‫and we didn't get any errors,
119
00:06:50,000 --> 00:06:53,040
‫which means that it's basically allowed
120
00:06:53,040 --> 00:06:58,040
‫to mutate this job variable when we use var, right?
121
00:06:58,340 --> 00:07:02,460
‫Now, although it looks like var and let are very similar,
122
00:07:02,460 --> 00:07:05,510
‫below the surface, they're actually pretty different.
123
00:07:05,510 --> 00:07:07,540
‫And actually there are also many differences
124
00:07:07,540 --> 00:07:10,550
‫between led const and var.
125
00:07:10,550 --> 00:07:12,760
‫So, between all three of them,
126
00:07:12,760 --> 00:07:15,930
‫and you will learn all about these differences later
127
00:07:15,930 --> 00:07:17,240
‫in section seven,
128
00:07:17,240 --> 00:07:20,380
‫because this is actually really important stuff.
129
00:07:20,380 --> 00:07:23,690
‫And I know that I keep saying that you will learn
130
00:07:23,690 --> 00:07:25,660
‫some topics later in the course,
131
00:07:25,660 --> 00:07:29,110
‫but the truth is that learning is really not linear.
132
00:07:29,110 --> 00:07:32,120
‫It cannot happen in a linear way.
133
00:07:32,120 --> 00:07:35,840
‫So, you sometimes need more advanced things right now,
134
00:07:35,840 --> 00:07:37,850
‫even without understanding them.
135
00:07:37,850 --> 00:07:38,870
‫But that's not a problem
136
00:07:38,870 --> 00:07:41,540
‫because you will understand them eventually.
137
00:07:41,540 --> 00:07:45,240
‫So, right now it would really not be useful for you to know
138
00:07:45,240 --> 00:07:47,470
‫that the let is block scoped
139
00:07:47,470 --> 00:07:50,380
‫and that VAR is function-scoped, right?
140
00:07:50,380 --> 00:07:52,590
‫Because you don't even know what a block
141
00:07:52,590 --> 00:07:54,510
‫or what a function really is.
142
00:07:54,510 --> 00:07:56,930
‫And so, we will learn about these differences
143
00:07:56,930 --> 00:07:58,750
‫in section seven.
144
00:07:58,750 --> 00:08:01,810
‫For now, what matters is that you should basically
145
00:08:01,810 --> 00:08:05,020
‫never use var, okay?
146
00:08:05,020 --> 00:08:08,560
‫Now just to finish, some people will probably point out
147
00:08:08,560 --> 00:08:12,820
‫that we actually don't even have to declare variables at all
148
00:08:12,820 --> 00:08:15,810
‫because it's actually not mandatory.
149
00:08:15,810 --> 00:08:18,730
‫We can just write something like this,
150
00:08:18,730 --> 00:08:23,730
‫last name equals Schmedtmann in my case.
151
00:08:28,760 --> 00:08:32,460
‫And then we can just use this variable name in this case
152
00:08:32,460 --> 00:08:34,860
‫by logging it to the console
153
00:08:34,860 --> 00:08:38,980
‫and JavaScript will happily execute this script,
154
00:08:38,980 --> 00:08:42,720
‫even without us declaring a variable, right?
155
00:08:42,720 --> 00:08:47,420
‫We didn't use let nor const nor a var in this case,
156
00:08:47,420 --> 00:08:49,240
‫but it still worked.
157
00:08:49,240 --> 00:08:52,950
‫However, this is actually a pretty terrible idea
158
00:08:52,950 --> 00:08:55,130
‫because this doesn't create a variable
159
00:08:55,130 --> 00:08:57,940
‫in the current so-called scope.
160
00:08:57,940 --> 00:09:00,840
‫Instead, JavaScript will create a property
161
00:09:00,840 --> 00:09:02,760
‫on the global object.
162
00:09:02,760 --> 00:09:05,520
‫And once again, you will understand a little bit later
163
00:09:05,520 --> 00:09:08,860
‫what all of this means, but what matters is
164
00:09:08,860 --> 00:09:13,110
‫that you should always properly declare variables, okay?
165
00:09:13,110 --> 00:09:15,520
‫Never just write a variable like this
166
00:09:15,520 --> 00:09:17,942
‫without really declaring it.
167
00:09:17,942 --> 00:09:19,120
‫Great.
168
00:09:19,120 --> 00:09:21,300
‫You're doing great progress here,
169
00:09:21,300 --> 00:09:24,590
‫even though our code doesn't really do anything yet,
170
00:09:24,590 --> 00:09:28,380
‫and we're not really writing any real applications yet.
171
00:09:28,380 --> 00:09:32,290
‫Right, but we still need to get some fundamentals down
172
00:09:32,290 --> 00:09:33,710
‫before we can do that.
173
00:09:33,710 --> 00:09:36,960
‫And so that's really important, and that's why I'm stressing
174
00:09:36,960 --> 00:09:39,840
‫all the little details about everything here.
175
00:09:39,840 --> 00:09:42,620
‫And I hope you see how important that is
176
00:09:42,620 --> 00:09:44,490
‫for your progress, okay?
177
00:09:44,490 --> 00:09:47,800
‫And don't worry, we will get to the cool stuff even
178
00:09:47,800 --> 00:09:51,300
‫a bit later in this first section, okay?
179
00:09:51,300 --> 00:09:52,520
‫But for now in the next video,
180
00:09:52,520 --> 00:09:55,843
‫let's talk about operators in JavaScript.
15090
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.