 So one of those big fancy, you know, $8 words that you hear at the beginning of every computer science course is this idea of abstraction All abstraction is doing is pretty much if we we think about it just for a second Let's look at a function. We've used already Random not random. Well, I said and I taught you that random not random is going to produce Some number from zero to one to one point zero not including one point zero How? Who cares? Oh, yeah, you can research it cool awesome. Good for you. You've researched it But for the purpose of my program, I don't care how you do what you do. I don't care how random that random works I don't care how random that it works. I don't care if Math.pow chooses to do a multiplication double asterisk version or if it chooses to use a loop To do its calculation. I don't care. I just understand I all I need to know is This is the function that produces this effect So one of those things we can do all of a sudden is I can start to break my Functions down into smaller functions. This gets very weird, but this is kind of where that That abstraction comes into play and this is where we call something called Decomposition comes into play We've talked about the idea. How do I eat an entire elephant? We break it down into smaller little chunks and then from there We're able to kind of digest things a little easier. So the same kind of concept comes into play Let's think of it like this, for example, let's even see a visualization going on here I've got a method that we are calling It's not gonna let me do that. Yeah I've got a method function here called square and I've got something called sum of square both of these Kind of work in tandem as you can see sum of square is calling Square all over the place. So how does it kind of work? So if we go through our kind of process and I visualize this for a second So we start off. I'm loading square x in the memory That's exactly all it does. It skips over the rest of it as you notice I loaded some of square in the memory. I Don't care. I didn't do any of it. A all of a sudden is now equaling negative five That got loaded in the memory B has been loaded in the memory C has been loaded in the memory Now I'm going to calculate out a result Result hasn't really been created in memory yet. All I've done is I've passed Suddenly a B and C to sum of squares in sum of squares. You notice that those Parameters don't have to be the same variables a B C and X Y Z For some of squares purpose. I don't care what you were called Outside of my function for the purpose of being in my function. You are these Variables now. Yeah, this is I apologize. I should pick that are wording But now all of a sudden I'm going to go ahead and kind of rename them a and B and C remember scope dictates that those only exist inside of here and I'm going to call suddenly square of X so I go in and Well, that needs to get evaluated before I can go any further So I go to square of X. I create Y. I return Y You see that return value is appearing suddenly. I'm going to see some variables get created in here a just got created here B does the same thing. It's squaring out X return for Just got created here C Going through that song and dance again Boom C exists now. All I want to do is add 25 to 4 to 100 I'm going to return 229 that's what now result equals and now I print this I got a scroll But as you can see suddenly I can Display these things and this is sort of allowing me to walk through my code Just a little bit if you're super curious about how to do this. This is through online Python 2 online