All right. Really, the key to any discussion you want students to have around if else statements, is to bring out this radically new thing, if you think about it, that we might create an instruction in our program that sometimes doesn't get executed. It's hard for students to think about sometimes because they're like, never. So, it's a really big difference to say yeah, sometimes if we're tracing through what's actually happening in this code, we might skip an instruction, for example. So, let's look at our first question. So, do you want to play? Answer yes or no. Correct answer is that when a user types in B, it's going to do the else part of the if statement because is answer equal to y, is B equal to y? No. Students may still be hanging onto the idea that computers should make sense. Therefore, if you ask, do you want to play? Answer yes or no, well, clearly you can only type in Y or N, but that's not the way computers work in general and this actually is something that people end up writing code around all the time in real programming languages, whenever somebody puts in an answer, you have to check and see if it's the right format and if not, what. If they didn't type in wire and you could ask them again. So, this is a real common thing. So, right here though, we just want to focus students on the fact that this condition answer equal y, that always evaluates to one of two values, true or false. So, they don't want to pay attention the the logic, they want that to what makes sense, they want to apply cold logic. So, you got to get them to think about how many actual options for the condition are out there. Just because they want to think about Y versus N as being our only two, the person could have typed in anything, they could have typed in AA, BBB, CCC. So, any answer that's not exactly Y, that's of course then going to be false and that answer equal Y evaluates to false, and then we will do the else. All right. Let's look at this next one. So, what we want here is to focus students in on a different part of the condition, and that is when we're dealing with numerical answers. That you got to think about that number line and what is the opposite. I'll keep using that word opposite, even though it's not the mathematically most accurate one because that's what students are used to, of a particular expression. So, here our expression is if answer greater than zero, so what are all of the answers that are not greater than zero. Well, it's not just the negatives, right? It's zero and all the negatives. So, this gets back to something we've looked at before, which is getting students to draw a number line without looking at these expressions that can evaluate to true or false. So, the opposite of greater than zero is less than or equal to zero. We don't want to forget that. What's the truth about CodeA and CodeB? So, actually two things are going on in this particular question. This is the first time we've used some abstract thing in our code. We don't define what CodeA is, we don't define what CodeB is. By the way, teacher tip, in Snap, you can make a block of any color actually. So, I made these. There's actually no code even behind them. I just use them so I can drag them out and talk about them in this image. So, our key thing here is that going back to the real challenge students have about if statements. So, it's so important, I literally have a 50-50 chance because it's not about getting the right answer, it's keen. You make the argument in words about why either CodeA or CodeB would be executed, but never both in one iteration. Some students will struggle with this, imagine this inside a loop or something like that and they're like, "Well other times, we're just talking this one code block, just executing at once, either CodeA or CodeB." So, again, this concept that some instructions, may never execute in a given run for code, is very hard for students. It's so important that I think literally asking students or getting students to try to give a rationale for why B is the correct answer in their own words is really, really powerful. It will be really helpful for you as the teacher to go in and listen as these students are discussing this, and see what kind of words are they using for this, to explain to each other that some code gets executing, some code does not. All right. What was true about the following code blocks? The key thing that we've got here is we've got two serially listed if statements. We have an if else with CodeA and B, and then another if that is below it, with where I have CodeC. Also pushing students a little bit toward abstraction. Here I even just took out the conditional ascendant. So, it's like, don't even look at that. That's not what we're focused on. What if we don't know the conditionals? So, this then just gets back into this understanding that CodeC can be executed no matter whether it's CodeA or CodeB because these two if's are one after each other. If's in sequence don't influence each other. Now, they may have seen some things that may be based on the condition that you choose, you feel they're related to each other, but that's based on the condition we have, the way that if statements work, when they're in sequence, they don't influence each other's execution. All right. Last one. Now, all you teachers are like, everybody's going to know to pick D because it's the longest answer. Yes, I know that's true. This would be horrible, truthful multiple-choice question to put on a summative assessment, but that's not the goal of the question. The goal is, we want kids talking to each other, arguing about what they think this code does. This code is actually quite complex. Really? That's a lot to ask people look at and talk about, "We've got the points variable, we've got an answer variable, we've got all this sort of thing." But, that's what we want them to do. We want them to be able to read some code they've never seen before and try to figure out what does it do. That's my key goal for this question. We want students to really understand this is what computer scientists do. They figure out what code does. I mean, yeah, they write code too, but the thing is you're always getting your own code wrong. So, what that means is, at the million times that it's wrong until you get a right, you're trying to figure out, what the heck is it doing and what I meant for it to be doing, but what is it actually doing? This also really focuses them on a point because we've been dealing with a new oval abstraction, this if else thing, but we've really build programs for humans. Programs are not built for the sake of computers, they're for us because we want a game that does something that we want, or we want driving directions to another place in town or whatever. So, constantly reinforcing for students that the reason they're creating programs is they should be things that they care about, or that other people would care about. That's what computer scientists do. We don't just sit in the basement or buy ourselves some computers. We're trying to solve problems and create things that make other humans' lives better.