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.
13830
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.