WEBVTT

1
00:00:00.770 --> 00:00:02.510
<v ->Hi guys, and welcome back.</v>

2
00:00:02.510 --> 00:00:05.220
In this video we're going to learn about if statements.

3
00:00:05.220 --> 00:00:07.979
An if statement allows us to use a Boolean

4
00:00:07.979 --> 00:00:10.340
to make a decision in our programme

5
00:00:10.340 --> 00:00:12.160
and potentially do different things,

6
00:00:12.160 --> 00:00:14.278
depending on the value of that Boolean.

7
00:00:14.278 --> 00:00:16.930
Of course, if statements are most useful

8
00:00:16.930 --> 00:00:19.020
when you have user input,

9
00:00:19.020 --> 00:00:22.220
such that your programme can potentially get different data,

10
00:00:22.220 --> 00:00:25.580
depending on who runs it and who's using your programme.

11
00:00:25.580 --> 00:00:27.830
So here we've got an input that asks the user

12
00:00:27.830 --> 00:00:29.430
for the day of the week,

13
00:00:29.430 --> 00:00:31.960
so what day of the week is it today?

14
00:00:31.960 --> 00:00:33.730
And then, we're going to check

15
00:00:33.730 --> 00:00:36.320
whether the current day of the week is Monday.

16
00:00:36.320 --> 00:00:37.440
So, how would you check

17
00:00:37.440 --> 00:00:39.260
whether the current day of the week is Monday?

18
00:00:39.260 --> 00:00:44.260
You would say day_of_week == the string "Monday".

19
00:00:45.050 --> 00:00:49.630
Let's print this out to see whether our Boolean works.

20
00:00:49.630 --> 00:00:52.870
So, all I've done is printed the Boolean out.

21
00:00:52.870 --> 00:00:54.813
And again, remember that this here

22
00:00:54.813 --> 00:00:58.053
will evaluate first, so Python will say,

23
00:00:58.053 --> 00:01:00.500
"Day of week, is it equal to Monday?"

24
00:01:00.500 --> 00:01:02.650
And if it is, then it will replace

25
00:01:02.650 --> 00:01:04.920
this entire thing by "true."

26
00:01:04.920 --> 00:01:07.597
Otherwise, it will be replaced by "false."

27
00:01:08.600 --> 00:01:09.990
And, if we run this,

28
00:01:09.990 --> 00:01:11.830
you see that we get our prompt,

29
00:01:11.830 --> 00:01:13.220
and you can type in "Monday,"

30
00:01:13.220 --> 00:01:14.780
and then you get True.

31
00:01:14.780 --> 00:01:16.092
But, if you type "Tuesday,"

32
00:01:16.092 --> 00:01:18.670
then you get False.

33
00:01:18.670 --> 00:01:20.750
So this is what we expected.

34
00:01:20.750 --> 00:01:22.930
Now, instead of printing this out,

35
00:01:22.930 --> 00:01:26.410
we can actually put it in an if statement.

36
00:01:26.410 --> 00:01:29.040
So the if statement is like this,

37
00:01:29.040 --> 00:01:33.450
you type in your if keyword, which is special in Python.

38
00:01:33.450 --> 00:01:36.040
Then you put a space, and then,

39
00:01:36.040 --> 00:01:37.772
without putting brackets or anything,

40
00:01:37.772 --> 00:01:41.980
you type your Boolean comparison.

41
00:01:41.980 --> 00:01:44.373
And then at the end you put your colon.

42
00:01:45.320 --> 00:01:49.140
This will evaluate as soon as the if statement runs,

43
00:01:49.140 --> 00:01:51.450
so as soon as Python reaches line 3,

44
00:01:51.450 --> 00:01:54.250
it's gonna calculate the result of this Boolean,

45
00:01:54.250 --> 00:01:56.630
which is gonna be true if the user entered "Monday,"

46
00:01:56.630 --> 00:01:58.680
and false if they didn't.

47
00:01:58.680 --> 00:02:00.930
And if it is true,

48
00:02:00.930 --> 00:02:05.590
then we will run the code under the if statement.

49
00:02:05.590 --> 00:02:07.720
And here's one of the most important things

50
00:02:07.720 --> 00:02:09.330
in Python programming,

51
00:02:09.330 --> 00:02:11.350
which is that there are a few spaces

52
00:02:11.350 --> 00:02:13.050
in front of this line here.

53
00:02:13.050 --> 00:02:15.630
This is called indentation in Python,

54
00:02:15.630 --> 00:02:19.910
and after a colon that defines a block of code,

55
00:02:19.910 --> 00:02:22.740
such as an if statement or a function or a class,

56
00:02:22.740 --> 00:02:24.378
we're gonna learn more about those later on,

57
00:02:24.378 --> 00:02:27.580
you need to put indentation.

58
00:02:27.580 --> 00:02:30.315
That is how Python tells which code

59
00:02:30.315 --> 00:02:32.520
is inside the if statement,

60
00:02:32.520 --> 00:02:36.160
i.e. which code you want to run when this is true.

61
00:02:36.160 --> 00:02:38.607
So, for example, you can print

62
00:02:38.607 --> 00:02:41.207
"Have a great start to your week!"

63
00:02:42.470 --> 00:02:44.890
Now, this is the line of code

64
00:02:44.890 --> 00:02:47.140
that is inside the if statement.

65
00:02:47.140 --> 00:02:49.930
If this is true, this line of code will run,

66
00:02:49.930 --> 00:02:53.040
because it's got these four spaces in front.

67
00:02:53.040 --> 00:02:53.873
I'll say at this point that

68
00:02:53.873 --> 00:02:55.610
you don't have to use four space in Python,

69
00:02:55.610 --> 00:02:57.850
you can use two, you can use six, or eight,

70
00:02:57.850 --> 00:03:00.540
whatever you want, but be consistent.

71
00:03:00.540 --> 00:03:02.400
So, always use the same number of spaces

72
00:03:02.400 --> 00:03:03.938
that's gonna make your code work,

73
00:03:03.938 --> 00:03:05.690
otherwise it may not work,

74
00:03:05.690 --> 00:03:07.880
and also it's gonna make your code look much better.

75
00:03:07.880 --> 00:03:09.360
If you've got different indentations

76
00:03:09.360 --> 00:03:10.720
in different parts of your programme,

77
00:03:10.720 --> 00:03:11.920
people are gonna be really confused

78
00:03:11.920 --> 00:03:13.400
when they look at your code.

79
00:03:13.400 --> 00:03:16.423
I recommend using four spaces for Python code.

80
00:03:17.320 --> 00:03:21.200
Now, if you print something and you remove the indentation,

81
00:03:21.200 --> 00:03:22.393
the spaces in front,

82
00:03:26.370 --> 00:03:28.320
for example, like this, what you're gonna get

83
00:03:28.320 --> 00:03:31.200
is that this code is always going to run,

84
00:03:31.200 --> 00:03:33.720
if this is true, or if it is false.

85
00:03:33.720 --> 00:03:35.530
Because it's not in the if statement,

86
00:03:35.530 --> 00:03:38.200
it's completely unrelated to the if statement.

87
00:03:38.200 --> 00:03:40.640
So, Python will run this code if it's true,

88
00:03:40.640 --> 00:03:41.800
it will run this code.

89
00:03:41.800 --> 00:03:43.520
If it's false, it will not run this code,

90
00:03:43.520 --> 00:03:45.300
and then it will jump to the next line

91
00:03:45.300 --> 00:03:47.290
and it will continue running from here.

92
00:03:47.290 --> 00:03:49.180
So, I'm gonna run this down here again,

93
00:03:49.180 --> 00:03:50.445
and I'm gonna type "Monday,"

94
00:03:50.445 --> 00:03:51.887
and then you see that we get,

95
00:03:51.887 --> 00:03:53.390
"Have a great start to your week!"

96
00:03:53.390 --> 00:03:55.250
and, "This always runs."

97
00:03:55.250 --> 00:03:56.771
But, if we type in "Tuesday,"

98
00:03:56.771 --> 00:03:59.130
then you just see "This always runs."

99
00:03:59.130 --> 00:04:01.847
and you don't see the "great start to your week".

100
00:04:02.890 --> 00:04:04.295
If you want to print something

101
00:04:04.295 --> 00:04:07.429
if the day of the week is not Monday,

102
00:04:07.429 --> 00:04:09.870
then you can do something like this:

103
00:04:09.870 --> 00:04:14.870
If day_of_week is not Monday, then print

104
00:04:15.597 --> 00:04:17.230
"Full speed ahead!"

105
00:04:17.230 --> 00:04:19.980
Let's run that, and then I'll type "Monday,"

106
00:04:19.980 --> 00:04:22.200
and you get "Have a great start to your week!"

107
00:04:22.200 --> 00:04:24.490
But, if we type "Tuesday,"

108
00:04:24.490 --> 00:04:27.240
then you see "Full speed ahead!"

109
00:04:27.240 --> 00:04:29.150
Now this is actually not great Python code,

110
00:04:29.150 --> 00:04:31.368
because you have two checks

111
00:04:31.368 --> 00:04:34.740
that will always be evaluated by Python.

112
00:04:34.740 --> 00:04:37.400
Here you've got day_of_week == "Monday"

113
00:04:37.400 --> 00:04:39.500
and this will always be checked,

114
00:04:39.500 --> 00:04:41.760
whether it is true or false, by Python.

115
00:04:41.760 --> 00:04:45.080
And then you have day_of_week is not equal to "Monday"

116
00:04:45.080 --> 00:04:47.180
and this will always be checked by Python,

117
00:04:48.240 --> 00:04:51.060
regardless of whether this one was true.

118
00:04:51.060 --> 00:04:53.170
Evidently, if this one is true,

119
00:04:53.170 --> 00:04:56.380
this one cannot be, and vice versa.

120
00:04:56.380 --> 00:04:59.130
So, Python provides you a very nice piece of syntax

121
00:04:59.130 --> 00:05:01.017
called the else syntax.

122
00:05:01.017 --> 00:05:02.590
And what this does is,

123
00:05:02.590 --> 00:05:05.403
if this is true, then we run this code.

124
00:05:06.340 --> 00:05:08.540
Otherwise, run this code.

125
00:05:08.540 --> 00:05:11.713
So this is much nicer and also is much easier to read.

126
00:05:12.570 --> 00:05:14.100
Let me say at this stage,

127
00:05:14.100 --> 00:05:17.350
that only one of these two will run.

128
00:05:17.350 --> 00:05:19.640
You cannot possibly run both,

129
00:05:19.640 --> 00:05:21.670
because you can't have this be true

130
00:05:21.670 --> 00:05:23.523
and also false at the same time.

131
00:05:24.500 --> 00:05:26.908
In addition, if you wanted to print something else,

132
00:05:26.908 --> 00:05:29.370
if the day of the week is Tuesday,

133
00:05:29.370 --> 00:05:34.253
you can do elif day_of_week == "Tuesday"

134
00:05:35.810 --> 00:05:39.580
And what this does is it creates a chained if statement,

135
00:05:39.580 --> 00:05:42.637
an if statement with three different branches.

136
00:05:42.637 --> 00:05:44.290
First, Python will check

137
00:05:44.290 --> 00:05:46.372
whether the day of the week is Monday,

138
00:05:46.372 --> 00:05:48.760
and it will print this if it is true.

139
00:05:48.760 --> 00:05:49.920
But if it's not true,

140
00:05:49.920 --> 00:05:50.970
then Python will check

141
00:05:50.970 --> 00:05:52.710
whether the day of the week is Tuesday,

142
00:05:52.710 --> 00:05:55.450
and it will print this if it is true.

143
00:05:55.450 --> 00:05:57.650
But if neither of those are true,

144
00:05:57.650 --> 00:05:59.543
then it will go to the else.

145
00:06:00.730 --> 00:06:04.130
An important part of this syntax here is that

146
00:06:04.130 --> 00:06:06.193
if the day of the week is Monday,

147
00:06:07.040 --> 00:06:09.380
then Python will print this stuff,

148
00:06:09.380 --> 00:06:11.070
and it will ignore the rest.

149
00:06:11.070 --> 00:06:14.420
So it will never calculate this comparison.

150
00:06:14.420 --> 00:06:16.750
So this is actually good for performance,

151
00:06:16.750 --> 00:06:19.800
and also it lets you have a comparison here

152
00:06:19.800 --> 00:06:22.460
that when it evaluates, or when it's true,

153
00:06:22.460 --> 00:06:24.130
it ignores the rest.

154
00:06:24.130 --> 00:06:25.900
So there's actually a lot of stuff you can do

155
00:06:25.900 --> 00:06:27.030
with this knowledge,

156
00:06:27.030 --> 00:06:28.430
and you'll encounter that plenty

157
00:06:28.430 --> 00:06:30.803
while you're doing Python programming.

158
00:06:32.190 --> 00:06:35.180
A common problem when you are dealing with user input

159
00:06:35.180 --> 00:06:38.510
is that they may not enter exactly what you expect.

160
00:06:38.510 --> 00:06:40.100
For example, it is quite common

161
00:06:40.100 --> 00:06:43.603
for a user to enter all lowercase letters

162
00:06:43.603 --> 00:06:46.365
when you ask them for something,

163
00:06:46.365 --> 00:06:48.270
just because they can't be bothered

164
00:06:48.270 --> 00:06:49.970
typing the uppercase letters.

165
00:06:49.970 --> 00:06:51.740
So here, the user has typed "monday"

166
00:06:51.740 --> 00:06:54.397
all in lowercase, and then we have printed out

167
00:06:54.397 --> 00:06:56.860
"Full speed ahead!" because the day of the week

168
00:06:56.860 --> 00:06:59.740
is not exactly equal to the string "Monday"

169
00:06:59.740 --> 00:07:01.400
with a capital M.

170
00:07:01.400 --> 00:07:04.360
So, you have to do something about it

171
00:07:04.360 --> 00:07:06.610
if you want your programme to be able to detect

172
00:07:06.610 --> 00:07:08.460
whether the day of the week is Monday

173
00:07:08.460 --> 00:07:11.470
in uppercase and in lowercase.

174
00:07:11.470 --> 00:07:14.360
What I'd recommend is that you get the user's input

175
00:07:15.270 --> 00:07:19.200
and just after you type .lower

176
00:07:19.200 --> 00:07:23.490
And then, this is going to turn this entire string

177
00:07:24.610 --> 00:07:27.163
into it's lowercase variant.

178
00:07:28.310 --> 00:07:31.931
Now, if they enter Monday with the capital M,

179
00:07:31.931 --> 00:07:34.830
then it is also gonna be turned into monday

180
00:07:34.830 --> 00:07:36.402
with a lowercase m,

181
00:07:36.402 --> 00:07:38.810
which means that monday =="Monday"

182
00:07:38.810 --> 00:07:41.460
with an uppercase M will not match.

183
00:07:41.460 --> 00:07:42.970
So, instead what you should do

184
00:07:42.970 --> 00:07:45.500
is turn everything to lowercase.

185
00:07:45.500 --> 00:07:48.160
By turning the user's input into lowercase,

186
00:07:48.160 --> 00:07:50.740
and your checks into lowercase,

187
00:07:50.740 --> 00:07:52.680
you're always going to have the same case,

188
00:07:52.680 --> 00:07:54.690
because they're both lowercase.

189
00:07:54.690 --> 00:07:56.690
So if we save that and run it,

190
00:07:56.690 --> 00:07:59.190
you'll see that now I can type "monday,"

191
00:07:59.190 --> 00:08:01.970
but I can also type "MONDAY" all in uppercase,

192
00:08:01.970 --> 00:08:04.850
and I can also type "Monday" as usual.

193
00:08:04.850 --> 00:08:06.970
So this is a good way of insuring that your programme

194
00:08:06.970 --> 00:08:10.973
will work, no matter what type of case the users type.

195
00:08:11.830 --> 00:08:12.890
Let's leave it at this,

196
00:08:12.890 --> 00:08:14.310
thank you for joining me in this video,

197
00:08:14.310 --> 00:08:15.440
I hope it's been useful,

198
00:08:15.440 --> 00:08:17.090
and I'll see you in the next one.

