WEBVTT
00:00:01.459 --> 00:00:03.043
Now that you know about while loops,
00:00:03.014 --> 00:00:05.242
let's talk about
another kind of loop, for loops.
00:00:05.811 --> 00:00:07.397
Here's a for loop I made to praise
00:00:07.398 --> 00:00:10.534
the most delicious kind of pizza,
pineapple pizza.
00:00:10.535 --> 00:00:12.965
You might think, "I liked while loops,"
00:00:12.966 --> 00:00:15.134
"Why should I care about
this new kind of loop?"
00:00:15.135 --> 00:00:17.333
Well, soon you will see
that a for loop is a way
00:00:17.334 --> 00:00:20.634
to write simple kinds of while loops
in a bit of a shorter way.
00:00:20.635 --> 00:00:22.693
So, before we inspect this for loop,
00:00:22.694 --> 00:00:26.316
let's go ahead and look at a while loop
which will be a bit more familiar.
00:00:26.317 --> 00:00:28.532
We'll get back to this for loop
in a moment.
00:00:28.533 --> 00:00:31.266
So, just like you saw
in the intro to while loops,
00:00:31.250 --> 00:00:33.584
We start with this variable y,
00:00:33.604 --> 00:00:36.728
and we write a message
using that location y.
00:00:36.729 --> 00:00:38.498
We say that we want to keep going
00:00:38.499 --> 00:00:42.767
as long as y is less than 300
and change y by 40 each time.
00:00:42.768 --> 00:00:46.668
Now, just to reinforce each of these,
which should be review,
00:00:46.669 --> 00:00:50.600
we can say that "Pineapple pizza is
the best" is an important message,
00:00:50.601 --> 00:00:52.400
so we probably want to be
writing it more.
00:00:52.401 --> 00:00:55.268
so we should start higher
--so we change that--,
00:00:55.269 --> 00:00:58.466
it should go on for longer,
so we make it bigger,
00:00:58.467 --> 00:01:01.636
and it should be spaced
closer together --don't you think?--
00:01:01.637 --> 00:01:03.612
so that's a little bit better.
00:01:03.613 --> 00:01:07.505
Now, let's see how we can change
this while loop into a for loop.
00:01:07.506 --> 00:01:09.567
I'm going to comment out this while loop,
00:01:09.568 --> 00:01:14.027
just so you can see that it's doing
what I'm saying it's going to do.
00:01:14.028 --> 00:01:19.836
And we'll create a for loop
and some space to fill in later.
00:01:19.837 --> 00:01:22.539
Something really important,
kind of different for a for loop,
00:01:22.540 --> 00:01:26.377
it's not just one thing that goes in here,
it's actually three things.
00:01:26.378 --> 00:01:27.932
We tell the computer that
00:01:27.933 --> 00:01:31.201
by using these semicolons
to separate the three parts,
00:01:31.536 --> 00:01:34.473
we'll have one part here,
one part here, one part here,
00:01:34.474 --> 00:01:37.331
and then, the inside of the loop,
just like we had before.
00:01:37.332 --> 00:01:39.579
So, what goes in each of these parts?
00:01:39.580 --> 00:01:45.866
You can think of it as a start,
or initialization,
00:01:45.867 --> 00:01:47.966
then we'll have a semicolon,
00:01:47.967 --> 00:01:50.994
then, some sort of instructions
on how long to repeat,
00:01:50.995 --> 00:01:55.967
and then we're going to have
some sort of change happening.
00:01:57.174 --> 00:01:59.630
So, how does that correspond
with this while loop?
00:01:59.631 --> 00:02:01.074
Really concretely, we can say
00:02:01.075 --> 00:02:04.133
that the start sets up
this variable y here,
00:02:04.134 --> 00:02:08.880
so let's copy and paste that over
to this first part of the for loop.
00:02:08.881 --> 00:02:13.400
Similarly, we can say
this middle part is saying
00:02:13.401 --> 00:02:17.196
how long we should keep going for
and that goes in the middle.
00:02:17.197 --> 00:02:24.743
We say the change happens at the end here,
we'll put that at the end of the for loop.
00:02:25.698 --> 00:02:29.518
These three parts always have to occur
in this order in your for loop.
00:02:29.519 --> 00:02:32.066
You always have to start by saying
00:02:32.067 --> 00:02:34.294
this is what the variable
should start out as.
00:02:34.295 --> 00:02:35.574
Here it's 27.
00:02:35.575 --> 00:02:41.562
Then you say how long to keep going for.
Repeat as long as it is less than 354.
00:02:41.563 --> 00:02:44.496
Then you need to put
how you are going to be changing things.
00:02:44.497 --> 00:02:47.835
So here we are going to be changing
by increasing y by 24.
00:02:48.747 --> 00:02:50.944
Last, you just have to do
00:02:50.945 --> 00:02:52.866
whatever you wanted to do
inside the for loop.
00:02:52.867 --> 00:02:54.671
So we'll go ahead
and write that text there.
00:02:54.671 --> 00:02:57.337
And there we have have it,
pineapple pizza is the best.
00:02:57.338 --> 00:02:59.234
Everybody will know.
00:02:59.235 --> 00:03:03.397
Now, let's think a bit more closely about
what's happening with this for loop.
00:03:03.398 --> 00:03:07.767
If we wanted to change where it started,
well, we just change the start here.
00:03:07.768 --> 00:03:11.166
If we wanted to change where it ended,
we just change this endpoint.
00:03:11.167 --> 00:03:16.034
If we wanted to change the spacing,
we would just change the increment number.
00:03:17.367 --> 00:03:20.641
We can also change
--just like with the while loop --
00:03:20.642 --> 00:03:23.443
what value we have for x.
00:03:28.453 --> 00:03:30.540
One thing that can be confusing
about a for loop
00:03:30.866 --> 00:03:32.971
is to remember what these semicolons do.
00:03:32.972 --> 00:03:37.165
You need to remember that they always need
to be there to separate the 3 parts.
00:03:37.166 --> 00:03:38.868
If we don't have them there,
00:03:38.869 --> 00:03:41.465
then we are going to get
some weird error messages
00:03:41.466 --> 00:03:42.599
about our for loop,
00:03:42.600 --> 00:03:45.634
so whenever you see
that just double-check that you have them.
00:03:45.635 --> 00:03:48.980
You also may get overenthusiastic
and add an extra one at the end,
00:03:48.981 --> 00:03:53.651
but if you just remember that semicolons
are only there to separate the 3 parts,
00:03:53.652 --> 00:03:56.871
then we can say that this last semicolon
isn't separating anything,
00:03:56.872 --> 00:04:01.164
it's just trailing on there, so we can
get rid of it because we don't need it.
00:04:01.165 --> 00:04:04.328
Now, I know you're probably
getting a little bit tired of seeing
00:04:04.329 --> 00:04:06.497
these for loops getting converted
into while loops and back,
00:04:06.705 --> 00:04:08.636
let's just do it one more time,
00:04:08.637 --> 00:04:10.557
so you can see a for loop really is
00:04:10.558 --> 00:04:13.286
just another way of writing
a simple kind of a while loop,
00:04:13.287 --> 00:04:15.766
and you'll be really confident
in understanding
00:04:15.767 --> 00:04:18.498
how to go from a for loop
back into a while loop.
00:04:18.801 --> 00:04:22.863
You can do that with any kind
of for loop, not just this one.
00:04:22.864 --> 00:04:24.854
The first thing that we do is think about
00:04:24.855 --> 00:04:28.193
where to put this first value
that we have inside of our for loop.
00:04:28.704 --> 00:04:31.062
Since it's just initializing
this variable,
00:04:31.063 --> 00:04:34.056
remember that it has to go outside
not inside the while loop,
00:04:34.057 --> 00:04:35.798
and it should go before as well,
00:04:35.799 --> 00:04:38.365
because we need to be using it
during our while loop.
00:04:38.366 --> 00:04:40.631
Then you think about
where should this condition go,
00:04:40.632 --> 00:04:41.831
--that's pretty easy--,
00:04:41.831 --> 00:04:45.942
usually the stop condition,
or the repeat until condition,
00:04:45.943 --> 00:04:47.567
needs to go inside here,
00:04:47.568 --> 00:04:51.873
we're gonna say while y
is less than 313 we'll keep going.
00:04:52.871 --> 00:04:54.326
Finally, the change.
00:04:54.326 --> 00:04:56.567
We always put the change
at the end of the while loop,
00:04:56.568 --> 00:04:59.639
in the loops that we've seen,
so we should go and do that here.
00:04:59.640 --> 00:05:04.235
Now, we just need to move this text call
inside, and there we have it.
00:05:04.696 --> 00:05:09.796
Comment out this whole loop, and you see
that we made the exact same thing happen.
00:05:11.556 --> 00:05:13.177
Hopefully by now, you can see
00:05:13.178 --> 00:05:15.678
that this new for loop
isn't actually necessary.
00:05:16.132 --> 00:05:20.101
We could go through our entire programming
lives writing loops that looked like this.
00:05:20.102 --> 00:05:23.968
But, it is a bit impressive
how much more concise this for loop is.
00:05:23.969 --> 00:05:27.604
It makes it a bit more clear,
once you're used to it, what's going on.
00:05:27.605 --> 00:05:29.400
How we're starting a variable,
00:05:29.401 --> 00:05:31.091
we're saying how long to keep going,
00:05:31.092 --> 00:05:33.367
and then changing that variable here.
00:05:33.368 --> 00:05:36.729
So, if you really hate for loops,
you don't have to use them ever,
00:05:36.730 --> 00:05:38.463
but you should be used to seeing them.
00:05:38.464 --> 00:05:40.206
And if they're confusing, just remember
00:05:40.206 --> 00:05:42.960
you can convert them back
into a while loop like this.
00:05:42.961 --> 00:05:46.500
And if you're feeling adventurous,
try using a for loop in your new program,
00:05:46.501 --> 00:05:48.664
or going back to some of your old,
simple while loops,
00:05:48.665 --> 00:05:52.101
and converting them
into for loops, if appropriate.
00:05:52.102 --> 00:05:56.700
A final note: you cannot always convert
a while loop into a for loop,
00:05:56.701 --> 00:05:59.299
only when they're
in a really simple form like this,
00:05:59.300 --> 00:06:01.942
where it's really clear
what variable you're starting out with,
00:06:01.943 --> 00:06:05.532
how long it's going for,
and how it's changing.