1
00:00:00,340 --> 00:00:04,180
Here's a question. Have you ever sat in your bath and wondered,

2
00:00:04,540 --> 00:00:07,750
why is it that no matter how forgetful I am,

3
00:00:08,140 --> 00:00:10,450
my bath never overflows like this?

4
00:00:10,690 --> 00:00:14,230
This is something I was thinking about the other day and I realized that it's

5
00:00:14,260 --> 00:00:19,180
not because I'm particularly diligent. I forget stuff all the time. I mean,

6
00:00:19,300 --> 00:00:24,190
pizza, anyone? This is what my pizzas usually look like. Um,

7
00:00:24,490 --> 00:00:29,490
but the reason why a bathtub or the sink doesn't overflow is because of this

8
00:00:30,490 --> 00:00:34,270
fantastic piece of engineering, the overflow.

9
00:00:34,810 --> 00:00:39,810
So this means that whenever the water reaches beyond a certain level about here,

10
00:00:40,810 --> 00:00:43,240
the water starts overflowing

11
00:00:43,270 --> 00:00:47,740
so the bathtub doesn't overflow and annoy your neighbors downstairs.

12
00:00:48,340 --> 00:00:53,110
In fact, we could represent this mechanism with a conditional statement.

13
00:00:53,680 --> 00:00:57,820
When the water level is say greater than 80 centimeters,

14
00:00:58,240 --> 00:01:00,670
then it should drain the water.

15
00:01:01,030 --> 00:01:04,420
But if the water level is not greater than 80 centimeters,

16
00:01:04,599 --> 00:01:07,240
it should continue filling up the tub.

17
00:01:07,660 --> 00:01:12,520
This type of conditional statement is known as an if/else statement.

18
00:01:13,000 --> 00:01:15,340
Depending on a particular condition,

19
00:01:15,580 --> 00:01:18,460
we would do either A or B.

20
00:01:18,910 --> 00:01:22,420
And when we want to write Python code to represent this,

21
00:01:22,600 --> 00:01:23,950
it looks something like this.

22
00:01:24,280 --> 00:01:29,280
There's the keyword if, and then the condition that we're testing for and then a

23
00:01:30,280 --> 00:01:35,280
colon and after the colon we've got an indented block of code which should be

24
00:01:35,800 --> 00:01:39,370
executed if this condition is met, if it's true.

25
00:01:40,120 --> 00:01:41,680
But if it's not true,

26
00:01:42,010 --> 00:01:47,010
then we will skip to the else block and it's just the else  keyword with a colon

27
00:01:47,800 --> 00:01:52,090
and then this code block would execute if the condition is false.

28
00:01:52,840 --> 00:01:57,490
So we could represent that previous bathtub situation with code that looks a bit

29
00:01:57,490 --> 00:01:58,150
like this.

30
00:01:58,150 --> 00:02:03,150
Let's say our water level is at 50 centimeters and then we would test if the

31
00:02:03,220 --> 00:02:07,690
water level is greater than 80 centimeters. Well, if that is the case,

32
00:02:07,750 --> 00:02:09,910
then we should drain the water.

33
00:02:10,360 --> 00:02:13,060
But if it's not greater than 80 centimeters,

34
00:02:13,120 --> 00:02:15,400
in other words else, well in this case,

35
00:02:15,430 --> 00:02:17,830
we should just continue filling up the bathtub.

36
00:02:18,280 --> 00:02:21,370
Let's put this into practice with a real life problem.

37
00:02:21,940 --> 00:02:26,350
Now let's say that you've gotten a job at a theme park and your first job of the

38
00:02:26,350 --> 00:02:31,330
day is to write some code that replaces the ticket box.

39
00:02:31,990 --> 00:02:35,800
Now there's a couple of things that you'll need to think about. Firstly,

40
00:02:35,980 --> 00:02:40,060
in order for somebody to actually purchase a ticket to go on the rollercoaster

41
00:02:40,060 --> 00:02:44,050
ride, they will need to be over 120 centimeters.

42
00:02:44,650 --> 00:02:49,060
So we have to check what their height is because if they're too short,

43
00:02:49,120 --> 00:02:53,740
then we won't be able to sell them a ticket anyways. In the course resources,

44
00:02:53,830 --> 00:02:58,830
I've included a link to this flow chart that I've created on draw.io.

45
00:02:59,890 --> 00:03:00,700
This is a really,

46
00:03:00,700 --> 00:03:04,960
really useful tool for creating any sort of flow charts or diagrams and it's

47
00:03:04,960 --> 00:03:09,550
really easy to use. Now, if we take a look at this flow chart,

48
00:03:09,820 --> 00:03:14,260
this is basically the logic that we have to program using our,

49
00:03:14,350 --> 00:03:15,850
if and else statements.

50
00:03:16,360 --> 00:03:21,360
If the person who's trying to purchase a ticket is not over 120 centimeters,

51
00:03:23,020 --> 00:03:26,020
then they can't ride on the rollercoaster.

52
00:03:26,530 --> 00:03:30,670
But if their height is greater than 120 centimeters, then they can ride.

53
00:03:30,850 --> 00:03:34,870
So let's try it out. If you head over to the starting Repl.it,

54
00:03:35,560 --> 00:03:39,310
you'll find some starting code in there and you can go ahead and fork this

55
00:03:39,310 --> 00:03:40,143
Repl.it.

56
00:03:40,780 --> 00:03:44,470
All that I've got here is a print statement that says "Welcome to the

57
00:03:44,470 --> 00:03:49,470
rollercoaster" as well as an input asking the user for their height in

58
00:03:49,930 --> 00:03:54,930
centimeters and then converting the string into a whole number, an integer, and

59
00:03:56,020 --> 00:03:58,780
then I'm storing it inside this variable called height.

60
00:03:59,440 --> 00:04:04,330
Now we're going to check whether if the height that the user has typed in is

61
00:04:04,330 --> 00:04:09,330
greater than 120. So we use the keyword if and then we check if the height is

62
00:04:10,960 --> 00:04:15,960
greater than 120 and then we add the colon and now when I hit enter,

63
00:04:17,410 --> 00:04:22,410
you'll notice that the code editor has automatically indented me slightly over.

64
00:04:23,050 --> 00:04:28,050
I'm not over here because in Python the spacing and indentation is really,

65
00:04:29,560 --> 00:04:30,400
really important.

66
00:04:30,790 --> 00:04:35,080
It tells the computer that the code that I'm about to write is what should be

67
00:04:35,080 --> 00:04:38,620
executed when this condition is met.

68
00:04:39,340 --> 00:04:44,340
So what should happen? If your height is over 120 then we will just print

69
00:04:44,980 --> 00:04:46,720
You can ride the rollercoaster!.

70
00:04:47,470 --> 00:04:52,470
But what should we print if height is not greater than 120? Well,

71
00:04:52,930 --> 00:04:57,930
in this case, we would use the else statement to catch when that happens.

72
00:04:58,840 --> 00:05:03,840
And it's really important that you don't write the else here because this is

73
00:05:04,120 --> 00:05:06,820
indented over. Instead,

74
00:05:07,030 --> 00:05:11,470
you want it to be at the same indentation level as the if statement.

75
00:05:11,950 --> 00:05:15,610
These two are essentially a pair, if and else. Now,

76
00:05:15,700 --> 00:05:16,990
after the else keyword,

77
00:05:16,990 --> 00:05:21,820
we again add a colon and then we hit enter and we're now indented again.

78
00:05:22,180 --> 00:05:27,180
And here we can write the code that should happen if this condition is false.

79
00:05:28,930 --> 00:05:30,910
"Sorry, you have to grow taller before you can ride."

80
00:05:31,900 --> 00:05:36,900
So the really important things here are the condition which we're testing for, is

81
00:05:38,290 --> 00:05:43,290
the value of height greater than 120, the syntax of this code

82
00:05:44,470 --> 00:05:45,520
so the keywords

83
00:05:45,550 --> 00:05:50,550
if and else as well as the colons that come after each of these lines.

84
00:05:51,850 --> 00:05:54,310
And finally also the indentation.

85
00:05:54,880 --> 00:05:57,740
Everything that is indented after the

86
00:05:57,950 --> 00:06:00,440
if is a block of code.

87
00:06:01,070 --> 00:06:06,070
So this is indented and it's effectively inside this

88
00:06:07,640 --> 00:06:08,840
if. So

89
00:06:08,840 --> 00:06:12,740
this line of code lives inside the else statement.

90
00:06:13,160 --> 00:06:18,160
This block of code lives inside the if statement. And if you mess up on the

91
00:06:19,340 --> 00:06:24,140
indentation then you're probably going to get an indentation error telling you

92
00:06:24,140 --> 00:06:28,250
that this line 5 probably should be indented.

93
00:06:28,910 --> 00:06:32,180
But when we do actually correct it and we hit run,

94
00:06:32,780 --> 00:06:36,200
let's say that our height is 130 centimeters,

95
00:06:36,680 --> 00:06:39,410
then we get back, you can ride the rollercoaster.

96
00:06:40,010 --> 00:06:43,520
But if our height was say 90 centimeters,

97
00:06:43,790 --> 00:06:47,180
then we get a different outcome. We get, sorry,

98
00:06:47,180 --> 00:06:50,510
you have to grow taller before you can ride. So by using,

99
00:06:50,600 --> 00:06:55,310
if and else statements we're able to get our code to do different things,

100
00:06:55,580 --> 00:07:00,580
either printing this line or printing this line depending on a condition that

101
00:07:01,130 --> 00:07:05,660
we're testing for. Now, when we use this greater than sign,

102
00:07:05,960 --> 00:07:10,960
effectively what we're saying is that is the height greater than 120 which means

103
00:07:13,160 --> 00:07:17,030
that it does not include 120. In fact,

104
00:07:17,030 --> 00:07:22,030
if I run this code and if I type in my height as 120 then actually goes into the

105
00:07:23,420 --> 00:07:25,760
else block and prints this.

106
00:07:26,480 --> 00:07:31,480
So if we wanted to include 120 centimeters so that all the people who are

107
00:07:31,730 --> 00:07:35,810
exactly 120 centimeters can ride the rollercoaster,

108
00:07:36,230 --> 00:07:38,840
then instead of just using a greater than symbol,

109
00:07:38,960 --> 00:07:41,330
we have to write greater than or equals.

110
00:07:41,780 --> 00:07:44,570
So these two symbols have to be next to each other.

111
00:07:45,470 --> 00:07:50,470
And now when I run my code and I write 120, you'll see that it's now falling into

112
00:07:51,980 --> 00:07:56,630
this block of code and it's telling me that I can ride the roller coaster. Now,

113
00:07:56,630 --> 00:08:01,630
these are called comparison operators and we've already seen greater than, so

114
00:08:01,730 --> 00:08:04,160
lesser than is pretty self explanatory.

115
00:08:04,430 --> 00:08:09,140
But we've also seen greater than or equal to and lesser than or equal to.

116
00:08:09,470 --> 00:08:13,580
So if you want to include a particular number, a particular value,

117
00:08:13,910 --> 00:08:17,270
when you do these comparisons, you would be using these instead.

118
00:08:17,990 --> 00:08:22,580
Now in this table, there's also the equal to and not equal to.

119
00:08:23,450 --> 00:08:24,050
For example,

120
00:08:24,050 --> 00:08:29,050
if you wanted to check if somebody's height is equal to precisely 120 then you

121
00:08:30,860 --> 00:08:35,860
would use two equal signs. And very often it gets a little bit confusing,

122
00:08:36,350 --> 00:08:40,370
especially if you're new to programming when you're typing equal signs,

123
00:08:40,429 --> 00:08:44,059
because sometimes we're typing one and other times we're typing two.

124
00:08:44,630 --> 00:08:47,420
It's important to remember that when you have one equal sign,

125
00:08:47,510 --> 00:08:52,400
it means that you're assigning this value to this variable.

126
00:08:53,000 --> 00:08:54,950
But when you have two equal signs,

127
00:08:55,050 --> 00:08:59,640
you are checking to see if the value on the left is equal to the value on the

128
00:08:59,640 --> 00:09:02,790
right and they're completely different. Now,

129
00:09:02,790 --> 00:09:04,650
the good thing is that when you get it wrong,

130
00:09:04,680 --> 00:09:09,680
usually you'll get enough clues in the error to actually hint to you,

131
00:09:09,750 --> 00:09:13,380
Hey, maybe there's something that's wrong here, right?

132
00:09:13,500 --> 00:09:17,220
Cause the syntax doesn't look right. For this to be a condition,

133
00:09:17,250 --> 00:09:20,760
it has to be something that evaluates to true or to false.

134
00:09:21,180 --> 00:09:24,600
And height =120 does not evaluate to either.

135
00:09:24,990 --> 00:09:26,520
So by changing it to this,

136
00:09:26,580 --> 00:09:31,580
we're saying if height is equal to 120 then we'll execute this line of code

137
00:09:32,250 --> 00:09:35,100
or any other lines which are in the same block of code.

138
00:09:35,640 --> 00:09:40,640
But if the height is not equal to 120 then we're going to execute this block of

139
00:09:41,010 --> 00:09:45,000
code. So if I write 120 then that works.

140
00:09:45,330 --> 00:09:50,100
But if I write 121 then it does not work.

141
00:09:51,000 --> 00:09:55,770
Similarly, you can also check for not equals to, which just flips it around.

142
00:09:56,220 --> 00:10:01,220
But in our case, it makes sense to say if the height is greater than or equals

143
00:10:01,350 --> 00:10:05,700
120 then you can ride the rollercoaster.

144
00:10:06,120 --> 00:10:11,120
But otherwise you cannot ride the rollercoaster. By using,

145
00:10:11,220 --> 00:10:12,570
if and else statements,

146
00:10:12,780 --> 00:10:17,780
we can get our computer to do different things and respond differently depending

147
00:10:18,060 --> 00:10:21,330
on different conditions. So in the next lesson,

148
00:10:21,390 --> 00:10:24,420
I've got a coding exercise for you. I'll see you there.

