In this video we're gonna talk about some of the basic math that we need for this part of the course. Don't worry, it's not gonna get too heavy and we're gonna keep it simple. So with that, let's just get started. First, I want to talk about logic and in particular I want to talk about Boolean logic, where all values can either be true or false and there's no gray area. There is no middle ground. Everything is either true or it's false, okay? And so, as we talk about this, I want to have some abbreviations for obvious reasons, abbreviate these as H and Z. So as we go on I don't have to write out true or false. Okay. So now, all right, I hope at least some of you are paying attention out there behind your computer. There is no possible logical reason why I would abbreviate true and false as H and Z. Let's abbreviate them as T and F, Like normal people? Alright. Now, It's all on good to be able to have values that are true and false but it's not too interesting unless I can combine them in some way. So Boolean logic includes the operators not, and, Not and an a or. Now, intuitively, I think you probably understand these from their definition of the English words of not, end, and or And you can just kind of work your way through what they neded Alright? But I wanna be mathematically precise here. So I'm gonna give you the exact definition of these three operators. Now, if I have a variable that can take on a value true of false, Let's call it a. Okay. Question is what is not A and I'm going to draw a tree table to show you this. Okay, the tree table looks like this where I show all the possible values of A can either be true or false. And I'll show you the value of the expression Not A over here. So if A is true, Not A is false. If A is false then not A is true. Okay and that probably makes intuitive sense to you or at least I hope it does. Okay? So let's look at and, and or now all right. So I don't just have to have one variable I can have two Boolean variables, Let's say A and B. Then we can look at what does A and B mean. Okay? So, I have got more combinations now. A could be false. B could be false. Or, A could be false and B could be true. Or, A could be true and B could be false. Or they both could be true. And that's it. Those are the four different combinations of A and B. Now, going to have A and B. Intuitively, you think if A is true and B is true, Then this also must be true. So, let's put a true down here. Now, if either of them are false, then I can no longer say that both A and B are true. Therefore the rest of these combinations here are false. Okay and since I don't want to draw another truth table let's just extend this one here and look at operator A or, okay now, A or B. If they're both false, hopefully, it's obvious that neither A nor B is true, so therefore the things going to evaluate to false. But this expression is true in all of the cases because at least one of A or B is true. Okay. So if I have the bullion expression a and b, it's true. If and only if both a and b are true and false otherwise. And if I have the bullion expression A and or B it's false. If and only if A and B are both false, and its true otherwise. Okay. So, hopefully this give you an intuitive understanding of the different logical operators. And what I to point out you, don't have to have simple expressions that only include one operator. I could have for instance have A, and. B or C and. Not D. Okay? And so, you can build this up in arbitrarily complex ways and you have to evaluate them in the same way that we evaluated the simpler expressions. So you can build a big giant truth table and you can actually figure out what is the value of this expression under all possible inputs. So we will actually use Boolean Logic in our program, So let's take a look at how they work in Python. Oka? So I can hand variables that take on the values true or false. So in Python, the word's true with a capital T and false with a capital F represent these Boolean values. I can print them and assume and do the obvious thing. Okay? You can see true and false show up here. I can create logical expressions, So let's put a little separator there. I can print A or not A. I can print. A and B. And print A or B. Okay? let's run this. You can see when A is true and B is false. Nod A is false, A and B is false, and A or B is true. This all makes sense, and this is directly from, from the previous slide. You can go back and look at the truth tables if you're a little bit confused still. Now, you notice that the. Boolean logic operators in Python are the English words, not and, and or and that's kind of nice cuz it's very easy to see what's going on here. Unlike some other programming languages where they use more cryptic operators for these things, okay? And I don't have to limit myself to simple expressions like that. I can do the complicated expression that we saw on the previous slide. I can print a and b, or c and not d. Now, I better define. C and D to be something here. C equals true. D equals false. Let's run this. And you can see for this set of inputs, that expression evaluates to true. And I invite you to sort of walk through it on your own and make sure that you understand what's going on. All right? So this is how we use Boolean logic inside Python programs. So Boolean logic is interesting and useful in and of itself, but you don't always have true and false values lying around in your program. Instead, you end up generating them a lot of time. Okay? And we generate them using comparison operators. Python has six comparison operators. It has greater than, less than, greater than or equal to, less than or equal to, equal to and not equal to. And these six comparison operators allow you to take two values, compare them to each other and generate a boolean. Alright? So let's try it out. So let's say A equals seven greater than three. Print A. Now instead of just assigning true or false to A we're assigning A to the value of the expression seven greater than three. And we know that seven is greater than three so I would expect this to print true and low and behold it does. Alright? And there's no reason why I just tapped out a constance there. I could say X= eight. Y=5. Five. B= X greater than or equal to Y. Print the. Okay. Now I've got an expression involving variable, involving variables and X greater than or equal to Y. I would expect that also to evaluate to true, because eight is, in fact, greater than or equal to Y and again it does what it's expected. Alright and since I used greater than or equal to here. I could actually change that to be the same number, it remains true. If I take out the equal,= , it becomes false. Okay? Alright. Now, I don't have to just do comparisons on numbers. I can also do comparisons on strings. So I could say, C=hello==hello, Hello"" =,, = Hello."" Right? Print C. What's gonna happen here. This value is true. Why? Because the text of the string hello is the same as the text of the string hello, and that makes good sense. Alright and I want to point out here that we're comparing the text, not the way you generated it. If you recall, we can have strings that use either single or double quotes and that does not matter here. I'm comparing the text. Okay? So if I actually want to get it to evaluate to false, I have to change the actual string. Now when I compare, it's false. Okay? So it's important to remember I'm comparing the text, not the, the way that it looks. Okay, with the single or the double quotes. Now I also want to point something else out about this expression. Okay. There is a single equal sign here, and there is a double equal sign here. This is a source of a lot of errors for beginning programmers, and quite frankly, experienced programmers as well. The single equal sign is assignment. Alright? So, this means, take what's on the right hand side of the equal sign, evaluate it, and put the value into the variable that's on the left. In this case C, Alright? The double equals is, is equal. Tell me if the left and right are equal to each other and evaluate to true or false okay? So try not to get that mixed up although I'm sure that you will every once in awhile, and most of the time Python will give you an error alright, when you mess it up. All right, I don't have to just do numbers or strings or integers or strings. I can do pretty much any Python type here, so I could say, hey, is 20.6 less than or equal to 18.3, printd.'Kay so that should evaluate to false I should hope.'Kay. And this is now a good way of generating these Boolean values. Using these comparison operators, I can then combine them, you know, with my favorite expression from before. And evaluate everything, okay, with this combination of values my expression of values is too true. Alright so we're gonna see this alone in python programs where you use these comparison operators to generate Booleans then you generate Boolean and you try to figure out what you like to do next in your program. That ends our quick and painless introduction to the mathematical concepts of Boolean logic and comparisons. In the next video we'll see how to use concepts to build more interesting