Welcome back to Introduction to Visual Basic. This is the second course in the Introduction to Computer Programming with Visual Basic Specialization. In this module, we're going to think about decision branching. This is the third module of the course. And the goal here is to think about ways we can change the flow of a program's execution, based on some sorts of tests we have inside of our code, all right? Let's have some fun. Right, so, by the time you're done with this module, I want you to be able to develop programs that utilize if statements, develop programs that utilize if/else statements, and develop programs that utilize case statements. And we'll walk through each of these in the lessons. Right, so, in our first lesson, let's thinking about Boolean expressions. These are the tests that we're going to use to determine which flow we'll take in our code. So we'll start of with relational operators. [COUGH] We've seen arithmetic operators in previous lessons and modules. Here, we're thinking about operators that always evaluate to True or False, okay? Some of these are binary, meaning they take two operands. So, for example, the top one is equal to that takes two operands. That compares the operands to see if they're equal. We have, not equal to, greater than, less than, greater than or equal to, less than or equal to. These are all binary operations. Then Is and IsNot are unary. They test a single thing to see if it's True or False. So, here's an example of a relational operator usage, we have grade > 90. That's going to give us True if the grade is > 90, not equal to it, right? If it's 90, that's false. If it's 90.1, that's True. We also have logical operators that allow us to combine together expressions that evaluate to True or False. So And and Or, and Not are typical ones. But you also have AndAlso and OrElse. So, for And to be True, both logical expressions must return True. For Or to be True, either logical expression has to be True. AndAlso returns a True value if both expressions are True, but it only evaluates the second expression if it's necessary. We call that shortcutting, often, in programming. So, if the first one is False, don't bother doing the second one, right? We know the expression's going to be False because they both have to be True. OrElse returns a True value of either expression is True, but it only evaluates the second expression if necessary. So, if the first one's True, there's no point in evaluating the second one because it just requires one thing to be True. So, basically, And and AndAlso are equivalent, as long as you're not changing state. And what I mean by changing state is our logical operations don't change anything in the program, right? So, it doesn't matter if we evaluate the second one. And Or and OrElse are True, as long as we're not changing state. And then, Not just reverses the value of an expression. So, Not False is True, and Not True is False. So, here's an example of logical operator usage. So, we're going to say the grade is greater than 90, AND the status is Completed, or = Completed. Both sides have to be True. So, if the grade is greater than 90, but the status is not equal to completed, this is False, right? Or if the grade is less than 90, but the status equals completed, it's still False, right? Both sides, so, grade has to be greater than 90, and the status has to be equal to Completed, for the expression to be True. All right, that's our quick little lesson on relational operators. And just a little review here. Relational operators evaluate to True or False. Logical operators allow us to build more complicated expressions by combining together relational comparisons. And both operands must be True for the expression to be True with an And. All right, I'll see you in the next lesson.