 So I just wanted to show this little graphics here to kind of give you an idea where Python lies within all the other languages. The real language is comprised of many characteristics or different layers. And as you can see here under this row, we have some very specific types of languages. If you look under this big blue box here, so all these program languages are very specific to their own thing, right? So usually you don't use it to do anything else other than what it's designed for. So like HTML is used primarily for web pages. You don't use that to create a game with something, right? I mean, you can, right? It's not that feasible. The same thing as over here, most of these are for like AIs and for math only. And then down here we have the general purpose languages. I'm sure you've seen a lot of these already. And most, well, actually the book of languages out there are for under this general purpose, okay? And then we look at the column wise. So we have the low level languages here and we have the high level. As you will see, probably 99% of all languages today are high level, okay? The only low level language that I know of that exists today is assembly. And I haven't done any assembly coding since like the late or the early 1990s, so that's the only one that I know of. Well, and then of course machine code is just binaries, okay? So low level here is it means just like how close it is, meaning your code itself, how close is it to the actual machine language? To zeros and ones, meaning binary codes, right? So in assembly language, although it's not written entirely in zeros and ones, it's written in some really very simple words that is also very hard to combine and join to make a statement. So if you were to add two numbers together in assembly, it will take about four or five lines of code just to do that. Because you have to move one number to a register, add another one and do a additional subtraction and then you have to clear the register and move things back. So the sequence is very, very tedious, but it does it in a way that when you run it, it's really fast, right? Because it's so close to machine code that you don't have to do much to convert those code to the actual zeros and ones. So it's really very fast, but it's just really hard to type into right, okay? So that computer scientists created new ways to do that and they create high level languages so that these high level languages are written in, you know, English words that we can easily associate with, we can understand better and also because we have very, you know, low capacity and memorization so that, you know, we use what are called variables to store data that will actually point to a location and memory, computer memory that will actually contain the zeros and ones, right? So because the high level, when you run your program, they have to compile or convert it to the actual binary code so that the computer can understand and run. As a result, when we go from the high level down to the low level to the machine code, it takes some extra time and because of that, it is actually much slower than the low level languages, okay? So that is the downside, but I think these days can be just really fast because, you know, with the advancement of new technologies, faster CPUs, it's almost like as fast as machine, low level languages. And so most of the languages are high level and then we have here everything in the blue box outside of the orange box, okay? Inside the blue box here, outside the orange box here are called or some strongly typed or statically typed languages, okay? And then everything inside this orange box here are the weekly typed languages. Again, does anybody know what those two terms mean? What do they mean by weekly typed and strongly typed? Well, those of you who have Python background should know, right? Okay, so in a nutshell, the strongly typed languages, it means that before you can use a variable, we'll talk about that later, to store data, you have to declare what type of data that variable have to store, right? Can store, otherwise you can't use it. So if you have a bucket, right? This bucket must contain water that it can only contain water, right? You cannot put like rocks in there or something like that. That is what's called a strongly typed language. So like in Java, for example, if you want to create a variable called age and the age is going to store only integer, then you have to specify that age will contain integer only and you cannot change that in the future, okay? So that is a strongly typed language. As opposed to the weekly type or sometimes called the dynamically typed languages, these you don't have to specify the type because the type will be assigned based on the values that they store. So if you have a variable called, let's say a pet, so usually we think of pet is a social with an animal or some sort and we can say pet equals cat, right? So that is a string of that type. Or we can also, you know, say pet is equal to five, you know, anytime along the way, it doesn't really matter because you can change their value anytime you want to assign to the same variable name. And so in that way, you don't have to say that, okay, pet must be an animal. It could be a number, it could be an object, it could be nothing, right? Any time in your program. And that's why they are weekly typed languages. And so Python falls under this category, okay? So we have here Python like PHP and JavaScript and Ruby's and several others as well is a weekly type language is also a high level and is a general purpose language. And there are many other characteristics which I'm not able to put in here. You have a multi-layer or dimensions here. And Python is also case sensitive, as you will learn. So computer languages are classified under two classifications called compile language and interpreted language. But sometimes called a scripting language. So Python is an interpreted language. So if you look at this workflow here, you'll see that on the left box is where you write your actual source code, your Python code or your Java code, it doesn't matter. And then so the first one here is compiler, compile language. This will be like a C, C plus plus and Java, visual basic and things like that. So when you write your code, you need a program to compile, okay? Meaning to convert your actual text of code into machine code, okay? So you need a compiler here. And it does that by reading every single character, every single line of statements in your code and it convert that to machine code. So this is what I mentioned earlier that high-level languages need to compile down and transpile, it's like translating it to compile into machine code so the machine can understand. And then finally it will spit out the output. So you're gonna get in the end here an additional file or files, what's called an executable file, okay? So in Java and see, in Java would be another dot Java file. And then in C plus plus or C should be get a dot ex ex executable file that you run and it will run until you actually delete, right? So here in the interpreted languages, you have in between just an interpreter, although this is not entirely true, you still have a compiler within the interpreter here, but mainly just interpreter that outputs the result out here. Now the difference between the two is that in the compile languages, okay, what it does is that when you run your code, the compiler will compile all your source code at the same time, all at once and convert everything into machine code assuming that there are no errors in your code and you get a single output file on the end, okay? So once your file is completed, output is done, then it's not gonna go back and do the compilation again, right? It's already finished. So at that point it's really fast at the time. The only time that it takes is to compile your code. As opposed to the interpreter language like Python, you have your source code here. If the interpreter here, it also compiles it but it compiles to a virtual machine that exists within Python itself and that virtual machine, they will talk to the underlying system. So that's why Python is a program that can run on any machine just like Java is because of that virtual machine that talks to the underlying system. But the neat thing about this is that it will execute one line at a time and output that for you, okay? So it does not have to compile everything all at once and give you one output at the end. So it goes as you compile and interprets it, it translates it and it renders it at the same time. So if there's an error in your code somewhere and one line of code is has an error, it will pause at that point. It will not continue on until you fix that line. So if you have script with JavaScript, same thing. If you miss one line of code that has an error then the rest of the code will not be executed because again, it's interpreting one line at a time, okay? As opposed to the compile, if you have run through this program, then the compiler will catch all the errors in your program and it will sped up all of the errors at once at the end for you so you can know where all the errors are. So that is a slight difference between the two here. And this is also why like JavaScript is interpreted language is also why it's used for web pages because websites needs to change almost instantaneously every second that a visitor comes to the page, right? You don't, it doesn't have to recompile, build, execute, or file and run again at the end. It just takes too much time to do that, okay? So there's always a pros and cons between the two types of languages, what you want to do with it. So I just want to show you that one there and you scroll down here a little bit. They have a nice table kind of give you the differences between the two types of languages.