1
00:00:01,740 --> 00:00:03,810
So, we already made
this super cool variable
2
00:00:03,810 --> 00:00:06,480
for Winston's eye size,
which has been really helpful
3
00:00:06,480 --> 00:00:08,916
because it saves us a lot of typing
when we want to change
4
00:00:08,916 --> 00:00:10,500
the size of Winston's eyes.
5
00:00:10,500 --> 00:00:13,393
Remember: before, we had to
type the same number four times
6
00:00:13,393 --> 00:00:15,966
whenever we wanted
to change the size of his eyes.
7
00:00:15,966 --> 00:00:17,809
But, can we use variables
to replace numbers
8
00:00:17,809 --> 00:00:19,212
when they're not all the same?
9
00:00:19,212 --> 00:00:21,716
Like, what if I wanted to
move Winston over a little bit?
10
00:00:21,716 --> 00:00:23,763
I could change
each of these x coordinates,
11
00:00:23,763 --> 00:00:25,568
but they're not all the same anyways,
12
00:00:25,568 --> 00:00:27,933
so I can't just replace them all
with some variable.
13
00:00:27,933 --> 00:00:29,139
But wait!
14
00:00:29,139 --> 00:00:31,825
Once I assign a number to a variable,
I can use that variable
15
00:00:31,825 --> 00:00:33,943
exactly as if it were that number,
16
00:00:33,943 --> 00:00:37,073
which means I can use variables
and math expressions.
17
00:00:37,073 --> 00:00:39,056
So, how about this:
let's make a variable
18
00:00:39,056 --> 00:00:41,039
for the x position of Winston.
19
00:00:41,039 --> 00:00:43,024
Call it var x.
20
00:00:43,024 --> 00:00:45,485
Simple enough.
Okay, now let's give it
21
00:00:45,485 --> 00:00:48,036
the value of the x coordinate
of Winston's face.
22
00:00:48,036 --> 00:00:51,339
His face is being drawn
at x coordinate 200.
23
00:00:51,339 --> 00:00:54,423
So, we're going to say var x gets 200.
24
00:00:55,053 --> 00:00:59,018
Now I can replace this number
with my new variable x,
25
00:00:59,018 --> 00:01:02,480
and when I change the value of x,
it moves Winston's face,
26
00:01:02,480 --> 00:01:04,292
but not his eyes or his mouth.
27
00:01:04,982 --> 00:01:08,038
So, to fix that, we're going to define
28
00:01:08,038 --> 00:01:10,415
the position of his eyes and his mouth,
29
00:01:10,415 --> 00:01:14,082
relative to the position of his face.
30
00:01:14,082 --> 00:01:16,752
The x coordinates
are going to be the centers
31
00:01:16,752 --> 00:01:20,462
of all the other ellipses,
so his face is being drawn at--
32
00:01:20,462 --> 00:01:24,596
that's 200,
and let's do his left eye first.
33
00:01:24,596 --> 00:01:26,472
So, this ellipse is his left eye,
and we can see
34
00:01:26,472 --> 00:01:29,608
that it's being drawn at 150.
35
00:01:29,608 --> 00:01:33,075
Right here, that is 150,
36
00:01:33,075 --> 00:01:37,552
and I know that 150 is 50 less than 200.
37
00:01:37,552 --> 00:01:42,360
So, his left eye should be
wherever his face is, minus 50.
38
00:01:42,360 --> 00:01:47,660
It's going to be x,
which is the position of his face, - 50.
39
00:01:48,020 --> 00:01:50,082
And now, if I change the value
of this x coordinate,
40
00:01:50,082 --> 00:01:53,254
his eye moves along with his face.
41
00:01:53,254 --> 00:01:54,616
Let's do the other ones.
42
00:01:54,616 --> 00:01:57,498
So, his right eye is being drawn at 300,
43
00:01:57,498 --> 00:02:01,470
I can see, so this over here is 300.
44
00:02:01,470 --> 00:02:05,754
And 300, I know, is 100 more than 200.
45
00:02:05,754 --> 00:02:09,902
So, his right eye should be
wherever his face is plus 100.
46
00:02:09,902 --> 00:02:12,535
That's x + 100.
47
00:02:12,535 --> 00:02:14,181
And now we just have his mouth.
48
00:02:14,181 --> 00:02:16,857
His mouth is being drawn at 250.
49
00:02:16,857 --> 00:02:19,396
That's over here, we've got 250,
50
00:02:19,396 --> 00:02:22,895
and 250 is 200 plus 50.
51
00:02:22,895 --> 00:02:26,054
So, it's going to be wherever--
ooh, that's a 5--
52
00:02:26,054 --> 00:02:30,983
wherever his face is,
x + 50.
53
00:02:30,983 --> 00:02:33,347
And now--
I'm going to get rid of these scribbles--
54
00:02:33,347 --> 00:02:38,253
whenever I change the value of x,
it moves his whole face.
55
00:02:38,253 --> 00:02:39,579
Yay!
56
00:02:39,579 --> 00:02:42,792
Now before you go, you should know
a couple more things about variables.
57
00:02:42,792 --> 00:02:45,558
Once you create a variable using var x,
58
00:02:45,558 --> 00:02:48,395
you can assign a value to it
as many times as you want.
59
00:02:48,395 --> 00:02:51,504
So, after giving x the value of 198,
60
00:02:51,504 --> 00:02:54,947
I could say x gets 300,
61
00:02:54,947 --> 00:02:59,240
or x gets 150.
62
00:02:59,240 --> 00:03:01,216
And from then on,
the computer would treat x
63
00:03:01,216 --> 00:03:03,432
as if it were
whatever we last assigned it.
64
00:03:03,432 --> 00:03:05,419
So, in this case, 150.
65
00:03:05,419 --> 00:03:08,235
But, you only need to type var
once per variable.
66
00:03:08,235 --> 00:03:12,510
If, over here, I had typed
var x gets 150 instead,
67
00:03:12,510 --> 00:03:15,825
that would have made
a brand new variable named x,
68
00:03:15,825 --> 00:03:18,394
completely destroying
the old variable x in the process,
69
00:03:18,394 --> 00:03:21,563
so all these variables
are gone, in the dumpster.
70
00:03:21,563 --> 00:03:24,615
And then, afterwards, the computer
would only use the new variable.
71
00:03:24,615 --> 00:03:28,127
Sometimes you can do this kind of thing
without horrible things happening to you,
72
00:03:28,127 --> 00:03:29,851
but I wouldn't advise it.
73
00:03:29,851 --> 00:03:33,208
For now, I'm just going to do it once:
var x gets 150.
74
00:03:33,208 --> 00:03:37,186
And now, conveniently,
I can move all of Winston off the screen,
75
00:03:37,186 --> 00:03:40,254
so I can talk about my next point.
76
00:03:40,254 --> 00:03:44,592
Whenever you have
a variable equals something,
77
00:03:44,592 --> 00:03:47,450
that variable is in a happy, safe place.
78
00:03:47,450 --> 00:03:50,691
In fact, to the left of the equal sign
is the only place
79
00:03:50,691 --> 00:03:53,532
where a variable
can truly feel like itself,
80
00:03:53,532 --> 00:03:55,540
because that is the only place
where the computer
81
00:03:55,540 --> 00:03:57,348
will consider it to be a variable.
82
00:03:57,348 --> 00:04:00,037
Anywhere else, the computer
just pretends it's a value.
83
00:04:00,037 --> 00:04:02,384
So even if we do something like this:
84
00:04:02,384 --> 00:04:06,041
var x gets 10
85
00:04:06,041 --> 00:04:10,504
and then x gets x.
86
00:04:10,504 --> 00:04:11,727
Woo, confusing.
87
00:04:11,727 --> 00:04:14,572
Well, over on the left,
we've got x,
88
00:04:14,572 --> 00:04:17,497
which is a free-thinking,
independent variable;
89
00:04:17,497 --> 00:04:20,372
one that can grow, can change!
90
00:04:20,372 --> 00:04:24,997
But, on the right, it's just,
well it's just 10.
91
00:04:24,997 --> 00:04:27,163
So sad!
But that means
92
00:04:27,163 --> 00:04:28,939
we can do really useful stuff like this:
93
00:04:28,939 --> 00:04:33,535
I can say x gets x + 1
94
00:04:33,535 --> 00:04:37,019
So, on the left, we've got our variable
in a happy, safe place,
95
00:04:37,019 --> 00:04:40,412
and on the right, we have this variable,
96
00:04:40,412 --> 00:04:42,674
which we know is basically just a number,
97
00:04:42,674 --> 00:04:44,206
so it's just 10.
98
00:04:44,206 --> 00:04:47,199
So, we can mentally replace
this with x gets 10 plus 1,
99
00:04:47,199 --> 00:04:51,064
Which just means x gets 11.
100
00:04:51,064 --> 00:04:54,319
So, this whole line is basically
just saying x gets 11,
101
00:04:54,319 --> 00:04:57,574
so from now on the value of x is 11.
102
00:04:57,574 --> 00:05:01,201
Let's see what happens if we
bring another variable into the equation.
103
00:05:01,201 --> 00:05:06,448
I'm going to do var x gets 10,
104
00:05:06,448 --> 00:05:10,473
var y gets 20,
105
00:05:10,473 --> 00:05:12,154
x gets y --
106
00:05:12,154 --> 00:05:13,835
oh, my god--
107
00:05:13,835 --> 00:05:17,107
and y gets 7.
108
00:05:17,111 --> 00:05:18,706
Okay, and what I want to know is,
109
00:05:18,706 --> 00:05:22,103
what is the value of x?
110
00:05:22,103 --> 00:05:23,531
Let's figure this out.
111
00:05:23,531 --> 00:05:27,176
So, at this line here,
we're making a new variable x,
112
00:05:27,176 --> 00:05:29,171
and assigning it the value of 10.
113
00:05:29,171 --> 00:05:31,777
So the value of x is 10.
114
00:05:31,777 --> 00:05:33,799
At this line, we're making
a new variable y,
115
00:05:33,799 --> 00:05:35,751
and giving it the value of 20.
116
00:05:35,751 --> 00:05:37,043
We don't do anything to x,
117
00:05:37,043 --> 00:05:39,345
so the value of x is still 10.
118
00:05:39,345 --> 00:05:41,986
Over here, we're saying x gets y.
119
00:05:41,986 --> 00:05:44,407
Well, that's pretty confusing,
but if you think about it,
120
00:05:44,407 --> 00:05:46,210
we know that only one of these variables
121
00:05:46,210 --> 00:05:48,453
is in the happy, safe place,
122
00:05:48,453 --> 00:05:50,378
and the other variable is being treated
123
00:05:50,378 --> 00:05:53,747
exactly as if it were a number.
124
00:05:53,747 --> 00:05:55,689
So over here, we can mentally replace
125
00:05:55,689 --> 00:05:57,791
this y with its value, which is 20,
126
00:05:57,791 --> 00:06:01,765
and we know that what this line
really means is x gets 20.
127
00:06:01,772 --> 00:06:05,029
So, the value of x here is 20.
128
00:06:05,029 --> 00:06:08,825
And then, over here, we've got y
in the happy safe place this time,
129
00:06:08,825 --> 00:06:10,421
but it's not really that confusing,
130
00:06:10,421 --> 00:06:12,698
because we've just got a number
on the other side.
131
00:06:12,698 --> 00:06:17,424
So, here's the big question:
when I change the value of y here,
132
00:06:17,424 --> 00:06:20,780
does that change the value of x up here?
133
00:06:20,780 --> 00:06:26,048
And the answer:
No! No, no, no, no, no!
134
00:06:26,048 --> 00:06:28,784
You've got to remember, up here,
135
00:06:28,784 --> 00:06:31,760
y is just being treated like a number.
136
00:06:31,760 --> 00:06:34,618
The computer's going to completely ignore
that it's a variable,
137
00:06:34,618 --> 00:06:36,270
forget the fact that it can change,
138
00:06:36,270 --> 00:06:38,773
and it's just going to say,
139
00:06:38,773 --> 00:06:42,376
"Oh, y? What you really mean is 20."
140
00:06:42,376 --> 00:06:44,741
So right here,
we're just assigning a number to x,
141
00:06:44,741 --> 00:06:46,625
we're not assigning a variable.
142
00:06:46,625 --> 00:06:50,249
We're assigning the value of y,
which is 20,
143
00:06:50,249 --> 00:06:54,034
and that means that
the value of x stays 20,
144
00:06:54,034 --> 00:06:58,369
even after we change the value
of this y variable from the last line.
145
00:06:59,929 --> 00:07:01,670
Phew! Capisce?
146
00:07:01,670 --> 00:07:05,229
Well, now you guys are
total experts on variables.
147
00:07:05,229 --> 00:07:07,299
Congratulations!