Mathematics are the result of mysterious powers that nobody understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs, a mathematician chooses one pattern for beauty's sake and brings it down to earth.
1. Boolean algebra 2. Numeral systems 3. Floating points 4. Logarithms 5. Set Theory 6. Combinatorics 7. Graph Theory 8. Complexity Theory 9. Statistics 10. Linear Algebra Interestingly i learned all of these in college but barely remember anything.
In my opinion the most important math class for programmers is discrete mathematics. They helped me understand recursion and stuff like that mathematically
@@roberleyrodrigues9769 discrete math was my favorite math class ive taken 💀and I hate math, linear algebra was fucked. Probably because my discrete prof was a real G
Small correction: the Big O notation doesn't specify how fast something is. A constant time complexity of O(1) doesn't mean that the operation/algorithm is fast, but that the speed is constant as the input scales. As a consequence, an O(n^2) algo can be faster than an O(n) algo, for some range of small inputs.
Besides this notation is overly used and too often big theta and big omega notations are omitted. Big O is the worst case scenario complexity, it does not make much sense for algorithms which don't do conditional breaks and skips inside a loop.
@@pawer122 That's not quite true. You're right that O(f) is an imprecise "worst case" complexity, but not because some algorithms can skip conditionals or loops. O(f(n)) means precisely "the set of all functions g(n) such that there exist some constants c and n0 such that, for all n >= n0, f(n)
Please do more such videos on computer science fundamentals. Like how compilers work, how interrupts work, internal working of CPU, network fundamentals, OS fundamentals, etc.
Basically a 4 year CS/CE degree in a nutshell series. Great to refresh your memory on certain concepts or to introduce them to someone for the first time so they can go on to dive deeper on their own.
@@mrgalaxy396 4 year degrees don't cover this is in much depth, surface level at most, I go to a "top" uni and the professors are not good at teaching and aren't usually experts. Reading a textbook on the topic, or even better, a video course with animations made by a expert is better. Georgia Tech for example has a free online video course on OS that's well made
I hated math in school, I avoided learning complex equations and algorithms when first learning to program, but once I saw a few of Sebastian Lagues videos where he does stuff in Unity, and started messing around with equations and learning to translate them from paper to code, I literally began to feel like I'm casting magic. Its so amazing what just a few dependent variables can change
Some people require an actual use case for their brain to be willing to learn something. Which is a shit thing to have in school, but it is what it is.
@@ChivGmailI am that kind of person, also same with math I literally swore to never do math again since high school, here I am happily binge watching math related videos
@@Bluemoon_wav I feel like a lot of interesting subjects are ruined by our current educational system. Our system isn't about learning, it's about seeing how good you are at forcing yourself to remember stuff you're not interested in.
@@ChivGmail I agree. A person cannot simply retain a textbook of information at all times, the amount of information we retain are limited to capacity and how long we can retain that information for. As the environment and times we are in changes, so does our selection of information that we retain in a given place at a given time. The only information we retain is that which is most relevant to our situation and where our attention is focussed. While I am driving, I do not retain the words Shakespeare invented, because that information is not relevant to the situation I am in. When you go to a library to study a subject, you select books that are relevant to what you are studying. Yes all that information is stored in our memory like books in a library, but the point is our brain selects information from that memory that is relevant to the situation a person is in, the time and place and the environment. I could explain on more levels like how the retained information can be compiled to make a plate of decisions to choose from, and how we can assess those decisions before making a judgement which would cause us to do a thing, but I'll leave you with this thought. Humans learn by their own sensemaking.
4:10 In math it's more common to use a different base (ln(x)), but it's easy to change by multiplying the result by a factor, so it's not really important if you're working in base 2, 10, or Euler's number.
@Lady Mercy Yep! and for completeness, ln(x) = log10(x)/Log10(e). This means that an algorithm which is O(n log10(n)) is the same as O(nlog2(n)), because nlog10(n)=nlog2(n)/log2(10), and we ignore any constant factors in O notation O(Cn)==O(n). When we want to look at an algorithm, we can choose whichever base is most convenient, like using logarithms in base 3 to describe a tree with 3 children per node.
yeah. base e stuff is MUCH more common in math because it was discovered through math itself and has a ton of beatiful properties built in. base 10 stuff is there for just for convenience of humans who count with 10 fingers and base 2 stuff is convenient for computers that count with on/off switches.
As a person who skipped linear algebra and trigonometry and jumped directly into gamedev, I'd suggest you to focus on your maths if you truly wanna build something breathtaking.
I made both 2d/3d games, and I think you don't need it so often. Game engines already done most of the maths for you, unless you want to create your own engine from scratch
@@nightflared I mean it kinda does when you're building things other than platformers and fps shooters, especially doing things without tutorial and I'm taking mostly about 3d
I feel like if teachers introduced some concepts as you introduced them here ppl would understand some things way faster, you've done some really nice visual aids, good job!
If my teacher would introduce some concepts like he introduces them here, I would be completely lost. He's simply too fast and his introductions are very, very, very, very high-level, as if you'd only read the first sentence of a Wikipedia article to understand something.
@@marloelefant7500 missing my point, again, I am referring to the visual aids of course it's not the content of it, it's the concept of beginning with simple visual aids and going from there
@@marloelefant7500 - Comparing video format to text. - Postulating that this short and fast video is the only information presented a teacher would present. - Not knowing that you can slow a video down if the speech is too fast. ... Are you even argueing in good faith, at this point ?
As a first year undergrad studying Applied Math who has much interest in Computers, I enjoyed this video a lot! I'm currently studying Abstract Algebra and boy that thing is so tough to grasp.
I've taken some combinatorics classes as a part of my math minor while I finish up my computer science degree. Taking combinatorics has changed the way I think about programming problems. The part I like about it the most is how different it is than other higher level math classes. You don't need to know a lot of any other math to jump in and learn it!
I paused the video in the middle just to say, that was the greatest explanation of logarithmic functions I've ever seen in my entire life, thank you for gracing me with that analogy and visual
I'm currently studying Graph Theory for a test in the 2nd year of uni. And looking at my future classes everything matches up to what you said in this video! Amazing.
@@konstantinsotov6251 on UA-cam brother. Pull out a notebook and pencil. Write down everything like it's a lesson. When you encounter deeper topics within a larger topic, pause that video and go study that thing until you can return to the same video and keep watching with an understanding. Me personally, I'm building computers in minecraft and I've been coming up with a shape identifying algorithm, this forces me to learn what I "need" to know before I can continue it's design In the Minecraft world.
1. Boolean algebra 2. Numeral systems 3. Floating points 4. Logarithms 5. Set Theory 6. Combinatorics 7. Graph Theory 8. Complexity Theory 9. Statistics 10. Linear Algebra
Your videos always feel like a freaking mind reader. Scans mind. Sees things that are a bit shaky. Explains them in easy to understand way that is also entertaining. Huge props! 😂
This was one of the most important and interesting videos of my (fresh) coding career and even my whole education. I wish I had teachers that could share their knowledge in this way because I could rarely connect to them and had to learn the things on my own(the hard way). Thanks again, I wish I could subscribe more times as my behind is too poor to give any other kind of support.
Same bro, im gonna learn all of these concepts in a few days using chatgpt and put it on my resume, why not? I can always go back to Google or ai for further help in the future if needed.
Love your videos! I am a software angineer who almost finished a degree in Mathematics with researchs in advanced boolean algebra before going back to CS in university, and it made my passion for programming only grow more and more! Now I'm finishing my graduation's final paper on Functional Programming and Category theory!
Dude this video is super cool because you were able to explain these concepts in a much simpler and easier to digest way than most of my professors did. It also makes me feel better as I see that while I'm not an expert in every concept, I'm familiar with all of them making me feel way less stupid 😅
Please do understand that this video is an extreme simplification of the most basic concepts. Dont be fooled that this is even a decent, however indeed entertaining, quick recap, if you truly want or need to master these concepts and their applications.
I'm a university student studying some math courses and currently studying statistics This video is amazing at revealing how my studies are linked to computer science
Very interesting and informative video. Very rarely does fireship ever miss, but some videos feel like they fall into a more repetitive format of namedropping a bunch of languages and frameworks loosely tied to a relevant topic. You're very good at explaining topics that can be hard to visualize, I hope you do more videos on general concepts
I completely agree with this. Math is crucial in programming even when nowadays some people want to ignore it. It is not hard if you enjoy it. What is wrong is that many math-lover programmers lie about how they hate math and that you don't need to learn math if you wanna be a good programmer like in this video (but he already confirmed but actually by using sarcasm). The reality is: if you have any problem with math you are gonna face REALLY HARD life problems on your job, and projects.
A little tip: exponents, roots and logarithms are interchangeable. If 3^2=9, then sqrt(9)=3 and log3(9)=2. Any exponentiation has three parts (base, exponent and result) and so there is a nth root that will give its base as a result and a logarithm that will give its exponent.
4:56 Set Theory is one of the foundations that enable defining the continuous structures of geometry, topology, and calculus. Zermelo-Fraenkel Set Theory with the Axiom of Choice (normally called just ZFC) can serve to specify the way a set interacts with an equipped topology, or how the set of real numbers contains numbers that cannot be reasoned about due to how uncountably transfinite it is.
@@theblinkingbrownie4654: Set theory is useful in CS... cos it ties in with databases. So.. if you need to create a register for a car park, say... And you want the names of the owners, and the model and location of what it is placed etc. That could be useful for classification purposes. You just need to know DB Theories. Set theories is the pre-requisites towards databases. But this video is quite clever... cos I have never considered the different databases globally.... That is scary.
It's interesting how calculus is part of the standard curriculum but is honestly a lot less important in day-to-day life than concepts that aren't as well taught, like Bayesian statistics. Of course, if quantum computing ever takes off, having a good handle on integral calculus is going to be one of the most useful skills in a CS arsenal.
@@GSBarlev I did see it pop up in some of my later math and cs courses but it’s very brief. For example, in my data structures and algorithms course, there were a couple algorithms that used calculus to prove its average time complexity. But we never had to do calculus nor were we tested on it, it was just the professor very briefly going over a proof.
@@GSBarlev calculus is used everywhere in deep learning. I don't know about you. But in our current era of revolution of AI I want to be able to understand at least the basics about it
@@GSBarlev It's good to have in the curriculum as an academic exercise though. Trying to understand abstract math problems helps with understanding abstract programming problems.
In the diagram in the Boolean algebra section, he put a cat in the square that says that something is both dead and alive at the same time. That's a really nice reference to Shrodinger's cat. Good job 👏👍👍
As a COmputer Sciences grad student, I had to take a course on every single subject mentioned (and more like calculus, numeric methods, group theory, differential equations and even some basic physics).
You explained logarithmic functions in a way that no upper level or university class ever was able to. Congratulations, you did what a professor could not.
This video does wonders... been procrastinating a few tasks today but the instant I clicked on this video I instantly jumped and started working on them
As someone who started off in PL/SQL with Procedural querying using Cursors, newer gen people don't realise how beautiful Set Based operations are in regards to modern SQL, Hashsets, Functional Programming, GroupJoins etc; and its beautiful how it immediately clicks in our brains when we commit to these. E.g imagine a baby given those shape to socket toys, the baby doesn't go through it iteratively, but rather already computes in sets(shapes and sockets) and performs map or fold in one go.
After dismissing it all for years when I couldn't appreciate it in high school... "Who would ever need the Pythagorean Theorem?". Now I'm learning about Fibonacci, the Russell paradox and the Mandelbrot set and I wish I would have known (more) about all this earlier and wasn't just taught enough to pass an exam in school. Could I have appreciated it more at an earlier age? I don't know. We're in a complex system that we don't have the tools to understand yet or maybe ever. Just like in AI development they have now found that language is the key to everything human, maths is the key to the universe.
We believe teachers are the core of our childrens education and therefor their future. My math teacher in primary school always told me how stupid I was etc and that I would never be able to properly function in society. She was partly right and partly wrong. I love being the odd one out and enjoy my personal space to the extend it may appear peculiar, this she nailed. What may offend her endlessly is to know that once I realised I could in fact do math it changed my universe and so many things around me came to blossom. Now I can program stuff she never even had the imagination to comprehend even if it was forced upon her. May her soul rest in peace, I have found mine. I mean this in all humbleness because talent is a gift and not an entitlement. Did I also mention my family were not rich. And I forgot to say she was an Apartheid teacher, very judgemental alike Apartheid religion. She could not teach me math, but she taught me to be strong. Thank you ms? Dreyer.
As an class 10th student looking for career in cs. I can say that I understood nothing 😢😂 but I can guarantee that I will come back to this video after 4 years ..love you ❤❤
funny how I was JUST stressing about how much math I'm gonna have to learn for programming (and I'm beyond horrible with math). I feel a bit more confident now since I can grasp the concepts laid out here pretty easily (the excellent explanation makes it easy to understand, so props!) it's just the actual numbers part that gets me lol
If you can grasp the concepts, you're a good way into passing maths. Most people who "aren't good with maths" have an aversion to it that holds them back. Get past that, study until just one thing clicks and realise that you were never bad with maths to begin with. The thing is: everybody's starting point is different. I had to catch up on maths from year 11 (10th grade for US) while my study group breezed through the discrete maths module. But I did and now I love it.
No worries! You only need a lot of math if you're making games, simulations, and models. Everything else is literally just recordkeeping and string manipulation.
Depending on what you want to do with programming you may not need most of these concepts or you may need much much more than that. Programming is a vast field. Skills needed in database administration or web development are much different than those needed in data science or computer graphics. The most important skill is actually English which might be a problem for non-native speakers but if you already have it, you are golden.
I was getting there but I see someone else is first, but putting my results here anyways. I only needed first 2 decoded, after searching for them I could find the binary quote Morse quote below: Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs a mathematician chooses one pattern for beauty's sake and pulls it down to earth.
The base64 you wrote through the video is the quote "Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs a mathematician chooses one pattern for beauty's sake and pulls it down to earth", notice that you forgot the dot in the end which would be Lg== in base 64. Which is also funny because Lg is binary logarithms if im not mistaken
2:58, the thing I find wrong about how floating point numbers are handled is the same reason get that .30...4, the exponent is used to represent where the decimal point is when the better way is to represent where the smallest support unit is so that the mantissa can be treated as an integer with N 0s in front/behind it from the known smallest of the containing bytes. For example, let's say we have a piece of paper that can support up to 32 digits (yes I'm referencing a standard float's number of bits), since we know that we can designate 8 digits to represent how far from the smallest digit we are, next we use half the max it can hold to tell us how small the smallest unit should be, so in this case 255 / 2 is 127.5, we'll round that down so that the fastest matching operating in a computer would be a simple right shift by 1, so now our smallest possible unit is 127 digits behind the decimal point & an exponent of 0 means exactly that, an exponent higher than 23 ( our remaining digits when accounting for the + & - prefixes) is definitely bigger than one with an exponent of 0 while any value between 23 & 0 would have to add the difference between the 2 values to the position of the highest digit to compare against the highest digit of the smaller exponent's mantissa. Yes we sacrifice the implied bit but instead we get 100% accurate results beyond the decimal point.. provided they're not longer than 127 digits that is *coughPI*
joins are NOT set unions/intersections. In particular, the way you displayed left/right joins would mean they just return the original tables, which is obviously not the case. SQL *does* have UNION and INTERSECT operators for queries. But an INNER JOIN e.g. is the graph of the relation defined after the ON, and the other ones are unions (!) of the latter with elements of A x {null} or {null} x B
Keep in mind tho, the practical realizations are not always consistent across all DBMS and versions for ANSI SQL. I had the displeasure having to work with a version of OracleDB that was made during their transition to ANSI and results were often ridiculous and an approximation and extensions of their bad non-ANSI Join operators(+,-).
- Asymptomatic Analysis - Discrete Mathematics - Statistics - Linear Algebra - Computation Theory (Operating System / Binary) - Some Calc for: - Numerics (High Precision / Order of Convergence) - Stats (Area Under The Curve / Standard Deviation)
The secret is a quote from Bertrand Russell on mathematics! Or at least one in a similar vein. Maybe you asked ChatGPT to make a quote about mathematics and it came up with this one lol. here's the text: "Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs, a mathematician chooses one pattern for beauty's sake and pulls it down to earth."
Nice one, seems like it encoded in base64 UTF8. This is what Chat GPT gave me as a result on first string: "Mallhematics arT▒▒▒ result" . But as a lazy developer I used IPhone camera to take a string from a youtube video, and it capture couple characters in a wrong way.
Chat GPT can decrypt the message instantly. It also explains that it is encrypted in Base64 which is a common encoding scheme used to represent binary data in ASCII format. It even corrects misspellings in the encryption.
Small nitpick: linear regression isn't just for lines. Fitting a polynomial or some linear combination of functions makes it linear in the linear algebra sense.
Small nitpick: RSA doesn't involve linear algebra at all. I think you might have meant to say AES instead, which represents the data to be encrypted as matrices and involves matrix multiplication in the MixColumns step
While studying data science, I found my two favorite algorithms. Hierarchical crustering and decision trees make incredibly satisfying visuals that most people can read without a lot of explanation.
The ones that don't have a formal education in STEM fields, yeah. The rest of us didn't have a choice when it came to learning the math bits haha It's a shame though, because math is so incredibly useful and honestly very interesting when you strip away all the formalities and focus on the concepts themselves. That's kind of the problem though, math isn't really math unless it's strictly formal and the formal definitions often don't make it obvious what they actually mean in a practical sense, which prevents people from seeing the bigger picture that is so valuable. That's why many people get turned off by it, if you don't have a good teacher or do your own research you lose the value in the noise of the formalities.
i used to be really good at math... But then as a young adult i didn't need it as much.. but now i learnt it again because i need it, and in the process of "relearning"... i figured out why some don't like math... Guys, if you don't like math, you need to understand how mathematicians think.. Math is not hard, it's just mathematicians are lazy. The symbols and letters mathematicians use, it's basically to shorten the formula. And it's humans like you and me who come up with those symbols and letters... So for each thing you learn, whether it's algebra or whatever... I HIGHLY recommand you try to learn the history of the symbols used. It really helps
Category theory is worthless unless you're a mathematician (which means you can get money to study it), but for programmers it has negative value because you could be learning something useful instead.
@@isodoubIet I've built an Prolog-like embedded DSL for Python using Monads. I found that Category Theory served me very well there. Also: There's a thing called the Curry-Howard-Lambek correspondence which states that I'm a mathematician. Look it up.
Floating point doesn’t actually let you “trade range for precision”. The range and precision are still determined by the specification, IEEE 754. Floating point lets you not have to waste space with all the digits that would be unnecessary precision on very large or small numbers. The main idea of floating point is just a spec for interpreting binary as scientific notation. It saves you from having to waste bits writing out extra zeros. For example in base 10, say I want to write 157 quadrillion, or 157,000,000,000,000,000, or 1.57x10^17. That’s a lot of digits wasted on zeros, since I probably didn’t care about anything past the first three. So instead, we agree in advance that the first two digits actually tell you the number of decimal places to move, and the rest is a number with the decimal after the first digit. So now I write 17157, and I just communicated an up-to 99 digit number to a three digit precision with only 5 digits. And not only does it save space in storage or memory or transmissions etc, it’s also easier to multiply and add very very large or small numbers, ultimately because this representation contains much less information/specificity than a normal 99 digit number. Then a couple tricks to make the most out of the problems of wanting to approximate the continuous, infinite Real numbers using a finite number of discrete bits. FP does have a bounded range, and there are some combinations of exponent and coefficient that would be unused, so they gave them some utility meanings like infinite and Not a Number as part of the standard, etc etc. And every binary number starts with one, so you can just assume it and save a bit.
If you were my Math teacher, I would have completed my college and would have processed a Computer Science Degree. This is definitely a great way of teaching. But now, I turned out a self taught software engineer 😅.
I moved from Belarus to Poland to learn it - profession , since there is no such education in my country. I even started doing my own programming lessons. It seemed to me that if you start teaching others, you yourself will learn a lot. And in this, after a while, I turned out to be right. So I would like to give you guys a piece of advice. The main thing is trying. Try and you will succeed. After all, without this there will be no result. Good luck to all)
Mathematics are the result of mysterious powers that nobody understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs, a mathematician chooses one pattern for beauty's sake and brings it down to earth.
congrats I guess, how you so fast I only got half way through
God damn it.
That was quick! Email me from this account at hello@fireship.io with your size & shipping details.
wow, that's fast
Was it just using Base64 for the Text between topics?
1. Boolean algebra
2. Numeral systems
3. Floating points
4. Logarithms
5. Set Theory
6. Combinatorics
7. Graph Theory
8. Complexity Theory
9. Statistics
10. Linear Algebra
Interestingly i learned all of these in college but barely remember anything.
I’m learning them in college right now and I legitimately want to forget it all.
Same, but I remeber how to work with matrix, but don't know how to calculate complexity)
@@Rawi888 and when you will need them, you will hate the you from today that wanted to forget it :)
Same here
Truth, Barely remember anything🫨, how I wish to return all this again and study it 🤯.
Thanks for being on of the best tech YT channels!
In my opinion the most important math class for programmers is discrete mathematics. They helped me understand recursion and stuff like that mathematically
True, discrete maths was the only class I actually found enjoyable back in the day, and after school I went into programming.
@@Ripcraze you guys are crazy, that shit made me leave my university course
@@roberleyrodrigues9769 discrete math was my favorite math class ive taken 💀and I hate math, linear algebra was fucked. Probably because my discrete prof was a real G
@@roberleyrodrigues9769I wanna drop discrete math too
Programming is just recursion a lot of the time, so I think it's the most important concept for programming.
Dude, your examples are so much better than anything we ever got at school. I kinda wanna become a teacher just to be as good as you one day.
whats the point? within 1-2 years AI will outperform us in every way possible.
@@stayhungry1503 maybe some people will still prefer human teachers, and maybe the whole point of doing something we want is self satisfaction
Fuckin ayyye.
Let machines do the work whilst we do what we actually want to do.
@@beater35
Yeesh what school dude, you got ripped off
@@stayhungry1503 delusion..
Small correction: the Big O notation doesn't specify how fast something is. A constant time complexity of O(1) doesn't mean that the operation/algorithm is fast, but that the speed is constant as the input scales. As a consequence, an O(n^2) algo can be faster than an O(n) algo, for some range of small inputs.
Besides this notation is overly used and too often big theta and big omega notations are omitted. Big O is the worst case scenario complexity, it does not make much sense for algorithms which don't do conditional breaks and skips inside a loop.
@@pawer122 That's not quite true. You're right that O(f) is an imprecise "worst case" complexity, but not because some algorithms can skip conditionals or loops.
O(f(n)) means precisely "the set of all functions g(n) such that there exist some constants c and n0 such that, for all n >= n0, f(n)
@@markpeschel8958 there is also little o and little omega notation to consider
O(n^2) can be faster than O(n) only if you manage to find a way to run the program for zero point something times
@@aintaintaword666 Absolutely wrong
Please do more such videos on computer science fundamentals. Like how compilers work, how interrupts work, internal working of CPU, network fundamentals, OS fundamentals, etc.
Basically a 4 year CS/CE degree in a nutshell series. Great to refresh your memory on certain concepts or to introduce them to someone for the first time so they can go on to dive deeper on their own.
fireship ruIe 34
These topics are not how fireship got huge. They are important .. fundamental .. but not the primary concern of 2M+ working devs
And data structure
@@mrgalaxy396 4 year degrees don't cover this is in much depth, surface level at most, I go to a "top" uni and the professors are not good at teaching and aren't usually experts. Reading a textbook on the topic, or even better, a video course with animations made by a expert is better. Georgia Tech for example has a free online video course on OS that's well made
As a Asian Student, I can confirm you that we have learned all those math without knowing any use of it. 🙂
Yeah because we have sh*t ton of entrance exams to crack
yes, the teacher just teach them without no real world use case scenarios.
+1
me learning all those subject in college then forgot all in lightspeed when the semester end
+1
I hated math in school, I avoided learning complex equations and algorithms when first learning to program, but once I saw a few of Sebastian Lagues videos where he does stuff in Unity, and started messing around with equations and learning to translate them from paper to code, I literally began to feel like I'm casting magic. Its so amazing what just a few dependent variables can change
Some people require an actual use case for their brain to be willing to learn something. Which is a shit thing to have in school, but it is what it is.
@@ChivGmailI am that kind of person, also same with math I literally swore to never do math again since high school, here I am happily binge watching math related videos
@@Bluemoon_wav I feel like a lot of interesting subjects are ruined by our current educational system. Our system isn't about learning, it's about seeing how good you are at forcing yourself to remember stuff you're not interested in.
@@ChivGmail I agree. A person cannot simply retain a textbook of information at all times, the amount of information we retain are limited to capacity and how long we can retain that information for. As the environment and times we are in changes, so does our selection of information that we retain in a given place at a given time. The only information we retain is that which is most relevant to our situation and where our attention is focussed. While I am driving, I do not retain the words Shakespeare invented, because that information is not relevant to the situation I am in. When you go to a library to study a subject, you select books that are relevant to what you are studying. Yes all that information is stored in our memory like books in a library, but the point is our brain selects information from that memory that is relevant to the situation a person is in, the time and place and the environment. I could explain on more levels like how the retained information can be compiled to make a plate of decisions to choose from, and how we can assess those decisions before making a judgement which would cause us to do a thing, but I'll leave you with this thought. Humans learn by their own sensemaking.
Do you have any particular videos you would recommend?
that log cut in half analogy was so practical and good. m never forgetting log graph in my life
4:10 In math it's more common to use a different base (ln(x)), but it's easy to change by multiplying the result by a factor, so it's not really important if you're working in base 2, 10, or Euler's number.
@Lady Mercy Yep! and for completeness, ln(x) = log10(x)/Log10(e).
This means that an algorithm which is O(n log10(n)) is the same as O(nlog2(n)), because nlog10(n)=nlog2(n)/log2(10), and we ignore any constant factors in O notation O(Cn)==O(n).
When we want to look at an algorithm, we can choose whichever base is most convenient, like using logarithms in base 3 to describe a tree with 3 children per node.
yeah. base e stuff is MUCH more common in math because it was discovered through math itself and has a ton of beatiful properties built in.
base 10 stuff is there for just for convenience of humans who count with 10 fingers and base 2 stuff is convenient for computers that count with on/off switches.
Thanks! We never used base 10 in calculus
In the Ada programming language, you can write integer literals in any base from 2 to 36. Don’t you wish more languages had that feature?
@@obviouslyblack
Base e is used because derivatives and integrals in base e are simpler to express than in other bases.
In an era of AI related content on this channel, I'm so relaxed to see a normal non-AI video recently!
@@uqams 😂😂
All the stuff in this video is important for AI modeling, especially Bayesian statistics but thank god Fireship didn't go any deeper on that subject.
linear algebira is using for ai
This kind of comment is getting almost as old as the AI content.
Have you tried MathGPT?
As a person who skipped linear algebra and trigonometry and jumped directly into gamedev, I'd suggest you to focus on your maths if you truly wanna build something breathtaking.
I made both 2d/3d games, and I think you don't need it so often. Game engines already done most of the maths for you, unless you want to create your own engine from scratch
@@nightflared I mean it kinda does when you're building things other than platformers and fps shooters, especially doing things without tutorial and I'm taking mostly about 3d
i like trigonometry
Mechanics is also really important for game dev
I feel like if teachers introduced some concepts as you introduced them here ppl would understand some things way faster, you've done some really nice visual aids, good job!
@@user-if1de8pt2j My comment refers to the benefits of visual aids in explaining a subject, which you seem to have misunderstood
If my teacher would introduce some concepts like he introduces them here, I would be completely lost. He's simply too fast and his introductions are very, very, very, very high-level, as if you'd only read the first sentence of a Wikipedia article to understand something.
@@marloelefant7500 missing my point, again, I am referring to the visual aids
of course it's not the content of it, it's the concept of beginning with simple visual aids and going from there
check out 3blue1brown
@@marloelefant7500
- Comparing video format to text.
- Postulating that this short and fast video is the only information presented a teacher would present.
- Not knowing that you can slow a video down if the speech is too fast.
... Are you even argueing in good faith, at this point ?
As a first year undergrad studying Applied Math who has much interest in Computers, I enjoyed this video a lot! I'm currently studying Abstract Algebra and boy that thing is so tough to grasp.
I've taken some combinatorics classes as a part of my math minor while I finish up my computer science degree. Taking combinatorics has changed the way I think about programming problems. The part I like about it the most is how different it is than other higher level math classes. You don't need to know a lot of any other math to jump in and learn it!
I love this! You did a really good job making these subjects relatable and show how important they are in computer science and software engineering.
Functional programming is still very closely attached to its mathematical roots and it makes programming experience beautiful.
bro when i first started coding and realized the functions were like math functions everything clicked 😩
and painful
I paused the video in the middle just to say, that was the greatest explanation of logarithmic functions I've ever seen in my entire life, thank you for gracing me with that analogy and visual
Hell yeah man!! That shit clicked instantly... I can believe I used to just memorise this while not really understanding anything..
Even me, i have the same experience. Hahaha
Exaaacccttllyyyyyy
I still don't know how I got though precalculus because of those damn logs 😭😭😭
Just for a guy on UA-cam explaining them with memes makes it make sense
@@BotsaneI love internet because school haven’t teached me yet
I'm currently studying Graph Theory for a test in the 2nd year of uni. And looking at my future classes everything matches up to what you said in this video! Amazing.
More math concepts for programmers:
- Modular arithmetic (RSA encryption)
- Differential geometry (smooth surfaces and curves)
- Lambda calculus (functional programming)
- Fourier transformation (image/audio compression & filtering)
- Information theory (data compression)
- Game theory (artifical intelligence)
- Quaternions (computer graphics)
OK STOP JUST GIVE ME THE ELECTRIC CHAIR ALREADY 😭
And now for the grand question
Where tf do you learn all of that if your school sucks...
@@konstantinsotov6251 on UA-cam brother. Pull out a notebook and pencil. Write down everything like it's a lesson. When you encounter deeper topics within a larger topic, pause that video and go study that thing until you can return to the same video and keep watching with an understanding. Me personally, I'm building computers in minecraft and I've been coming up with a shape identifying algorithm, this forces me to learn what I "need" to know before I can continue it's design In the Minecraft world.
To OP, thanks for noting these other topics.
1. Boolean algebra
2. Numeral systems
3. Floating points
4. Logarithms
5. Set Theory
6. Combinatorics
7. Graph Theory
8. Complexity Theory
9. Statistics
10. Linear Algebra
Your videos always feel like a freaking mind reader. Scans mind. Sees things that are a bit shaky. Explains them in easy to understand way that is also entertaining. Huge props! 😂
This was one of the most important and interesting videos of my (fresh) coding career and even my whole education. I wish I had teachers that could share their knowledge in this way because I could rarely connect to them and had to learn the things on my own(the hard way). Thanks again, I wish I could subscribe more times as my behind is too poor to give any other kind of support.
Same bro, im gonna learn all of these concepts in a few days using chatgpt and put it on my resume, why not? I can always go back to Google or ai for further help in the future if needed.
at the beginning my ego increased but by the end my ego died
On the bright side, after watching the video, you should be able to plot the rise and fall of your ego on a chart.
It was at this moment I knew am f'd up😂😂
Love your videos! I am a software angineer who almost finished a degree in Mathematics with researchs in advanced boolean algebra before going back to CS in university, and it made my passion for programming only grow more and more! Now I'm finishing my graduation's final paper on Functional Programming and Category theory!
Angina is dangerous man good luck
I wish you success and joy. Good luck out there champ.
Dude this video is super cool because you were able to explain these concepts in a much simpler and easier to digest way than most of my professors did. It also makes me feel better as I see that while I'm not an expert in every concept, I'm familiar with all of them making me feel way less stupid 😅
The professors tried to lead you deeper into the Dunning-Kruger curve...
I was just about to say this, I wishing my teachers explained math like this when I was in school
Please do understand that this video is an extreme simplification of the most basic concepts.
Dont be fooled that this is even a decent, however indeed entertaining, quick recap, if you truly want or need to master these concepts and their applications.
@@ViktorWingqvist this, and also the fact that everyone expects earning a degree in computer science just means attending some codecamp
I'm a university student studying some math courses and currently studying statistics
This video is amazing at revealing how my studies are linked to computer science
Very interesting and informative video. Very rarely does fireship ever miss, but some videos feel like they fall into a more repetitive format of namedropping a bunch of languages and frameworks loosely tied to a relevant topic. You're very good at explaining topics that can be hard to visualize, I hope you do more videos on general concepts
I completely agree with this. Math is crucial in programming even when nowadays some people want to ignore it. It is not hard if you enjoy it. What is wrong is that many math-lover programmers lie about how they hate math and that you don't need to learn math if you wanna be a good programmer like in this video (but he already confirmed but actually by using sarcasm). The reality is: if you have any problem with math you are gonna face REALLY HARD life problems on your job, and projects.
A little tip: exponents, roots and logarithms are interchangeable. If 3^2=9, then sqrt(9)=3 and log3(9)=2. Any exponentiation has three parts (base, exponent and result) and so there is a nth root that will give its base as a result and a logarithm that will give its exponent.
these bits of math "gotchas" are gold, thank you
4:56 Set Theory is one of the foundations that enable defining the continuous structures of geometry, topology, and calculus. Zermelo-Fraenkel Set Theory with the Axiom of Choice (normally called just ZFC) can serve to specify the way a set interacts with an equipped topology, or how the set of real numbers contains numbers that cannot be reasoned about due to how uncountably transfinite it is.
But is it useful in cs? Seems like you'd need to be in incredibly specific fields before knowledge of ZFC is useful but I could be wrong
Category theory gang rise up
@@theblinkingbrownie4654: Set theory is useful in CS... cos it ties in with databases. So.. if you need to create a register for a car park, say... And you want the names of the owners, and the model and location of what it is placed etc. That could be useful for classification purposes. You just need to know DB Theories. Set theories is the pre-requisites towards databases. But this video is quite clever... cos I have never considered the different databases globally.... That is scary.
My Brain Broke at that point
This is the first time I understood logarithms thanks alot, I think this will 'stick' with me for some time before I forget it
Except for calculus, this video was my entire math journey through my first 2 years of my CS degree.
It's interesting how calculus is part of the standard curriculum but is honestly a lot less important in day-to-day life than concepts that aren't as well taught, like Bayesian statistics.
Of course, if quantum computing ever takes off, having a good handle on integral calculus is going to be one of the most useful skills in a CS arsenal.
@@GSBarlev I did see it pop up in some of my later math and cs courses but it’s very brief. For example, in my data structures and algorithms course, there were a couple algorithms that used calculus to prove its average time complexity. But we never had to do calculus nor were we tested on it, it was just the professor very briefly going over a proof.
@@GSBarlev calculus is used everywhere in deep learning. I don't know about you. But in our current era of revolution of AI I want to be able to understand at least the basics about it
@@GSBarlev It's good to have in the curriculum as an academic exercise though. Trying to understand abstract math problems helps with understanding abstract programming problems.
Thanks!
In the diagram in the Boolean algebra section, he put a cat in the square that says that something is both dead and alive at the same time. That's a really nice reference to Shrodinger's cat. Good job 👏👍👍
Your explanation of the logarithm is outstanding
As a COmputer Sciences grad student, I had to take a course on every single subject mentioned (and more like calculus, numeric methods, group theory, differential equations and even some basic physics).
0:02 Well, that's true for some simple programming fields like Web Dev. But there are obviously fields of programming where math is more important.
You explained logarithmic functions in a way that no upper level or university class ever was able to. Congratulations, you did what a professor could not.
This video does wonders... been procrastinating a few tasks today but the instant I clicked on this video I instantly jumped and started working on them
As someone who started off in PL/SQL with Procedural querying using Cursors, newer gen people don't realise how beautiful Set Based operations are in regards to modern SQL, Hashsets, Functional Programming, GroupJoins etc; and its beautiful how it immediately clicks in our brains when we commit to these.
E.g imagine a baby given those shape to socket toys, the baby doesn't go through it iteratively, but rather already computes in sets(shapes and sockets) and performs map or fold in one go.
After dismissing it all for years when I couldn't appreciate it in high school... "Who would ever need the Pythagorean Theorem?". Now I'm learning about Fibonacci, the Russell paradox and the Mandelbrot set and I wish I would have known (more) about all this earlier and wasn't just taught enough to pass an exam in school. Could I have appreciated it more at an earlier age? I don't know. We're in a complex system that we don't have the tools to understand yet or maybe ever. Just like in AI development they have now found that language is the key to everything human, maths is the key to the universe.
Now time for the prerequisites: strong understanding of high school math, calc 1-3, and proofs for the discrete math.
i got a 64 in high school math and im doing fine
Thanks
We believe teachers are the core of our childrens education and therefor their future. My math teacher in primary school always told me how stupid I was etc and that I would never be able to properly function in society. She was partly right and partly wrong. I love being the odd one out and enjoy my personal space to the extend it may appear peculiar, this she nailed. What may offend her endlessly is to know that once I realised I could in fact do math it changed my universe and so many things around me came to blossom. Now I can program stuff she never even had the imagination to comprehend even if it was forced upon her. May her soul rest in peace, I have found mine. I mean this in all humbleness because talent is a gift and not an entitlement. Did I also mention my family were not rich. And I forgot to say she was an Apartheid teacher, very judgemental alike Apartheid religion. She could not teach me math, but she taught me to be strong. Thank you ms? Dreyer.
I wonder how much time did it take you to compile this information... I understand all the concepts but to summarize them is not easy. Well done!
As an class 10th student looking for career in cs. I can say that I understood nothing 😢😂 but I can guarantee that I will come back to this video after 4 years ..love you ❤❤
With content like these, it'll be long before AI replaces you... Kudos.
the reference to Schrodinger's cat at 1:27 was aweoxme. Its always the details in FireShip's videos man.
3:23-3:26 "Now that we know how numbers work..."
My brain is fried and I am in tears
funny how I was JUST stressing about how much math I'm gonna have to learn for programming (and I'm beyond horrible with math). I feel a bit more confident now since I can grasp the concepts laid out here pretty easily (the excellent explanation makes it easy to understand, so props!) it's just the actual numbers part that gets me lol
If you can grasp the concepts, you're a good way into passing maths. Most people who "aren't good with maths" have an aversion to it that holds them back. Get past that, study until just one thing clicks and realise that you were never bad with maths to begin with.
The thing is: everybody's starting point is different. I had to catch up on maths from year 11 (10th grade for US) while my study group breezed through the discrete maths module. But I did and now I love it.
If the problem is just the numbers, then you'll be fine. Programming is basically outsourcing the boring arithmetic out of the concepts you're using.
No worries! You only need a lot of math if you're making games, simulations, and models. Everything else is literally just recordkeeping and string manipulation.
Depending on what you want to do with programming you may not need most of these concepts or you may need much much more than that. Programming is a vast field. Skills needed in database administration or web development are much different than those needed in data science or computer graphics. The most important skill is actually English which might be a problem for non-native speakers but if you already have it, you are golden.
@@Zeero3846 even then if you're using a sophisticated game engine like 80% of the math needed goes away too
I was getting there but I see someone else is first, but putting my results here anyways.
I only needed first 2 decoded, after searching for them I could find the binary quote Morse quote below:
Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs a mathematician chooses one pattern for beauty's sake and pulls it down to earth.
The base64 you wrote through the video is the quote "Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs a mathematician chooses one pattern for beauty's sake and pulls it down to earth", notice that you forgot the dot in the end which would be Lg== in base 64. Which is also funny because Lg is binary logarithms if im not mistaken
LOVE the "log" analogy
2:58, the thing I find wrong about how floating point numbers are handled is the same reason get that .30...4, the exponent is used to represent where the decimal point is when the better way is to represent where the smallest support unit is so that the mantissa can be treated as an integer with N 0s in front/behind it from the known smallest of the containing bytes. For example, let's say we have a piece of paper that can support up to 32 digits (yes I'm referencing a standard float's number of bits), since we know that we can designate 8 digits to represent how far from the smallest digit we are, next we use half the max it can hold to tell us how small the smallest unit should be, so in this case 255 / 2 is 127.5, we'll round that down so that the fastest matching operating in a computer would be a simple right shift by 1, so now our smallest possible unit is 127 digits behind the decimal point & an exponent of 0 means exactly that, an exponent higher than 23 ( our remaining digits when accounting for the + & - prefixes) is definitely bigger than one with an exponent of 0 while any value between 23 & 0 would have to add the difference between the 2 values to the position of the highest digit to compare against the highest digit of the smaller exponent's mantissa. Yes we sacrifice the implied bit but instead we get 100% accurate results beyond the decimal point.. provided they're not longer than 127 digits that is *coughPI*
Is this "math" with us in this room right now Fireship?
people who use base1: 🗿🗿🗿
Actually we do when we count our finger like lllll lllll
1 = 🗿
2 = 🗿🗿
3 = 🗿🗿🗿
@@msg-1995we dont, we just use an ineffizient version of base 2
Fireship actually have ability to convince me that I need certain subject or tool for my career
I wish I could like this video more than one time, because it is the best math explanation I ever got.
This video boosted my intrest in my exam preparation
Very concise and excellent content. Shall we make one on Theory of Computation?
joins are NOT set unions/intersections. In particular, the way you displayed left/right joins would mean they just return the original tables, which is obviously not the case. SQL *does* have UNION and INTERSECT operators for queries. But an INNER JOIN e.g. is the graph of the relation defined after the ON, and the other ones are unions (!) of the latter with elements of A x {null} or {null} x B
Keep in mind tho, the practical realizations are not always consistent across all DBMS and versions for ANSI SQL. I had the displeasure having to work with a version of OracleDB that was made during their transition to ANSI and results were often ridiculous and an approximation and extensions of their bad non-ANSI Join operators(+,-).
Vector vs Scalar quantities are pretty excellent to know when thinking about useful analytics. I'm so happy you mentioned them!
- Asymptomatic Analysis
- Discrete Mathematics
- Statistics
- Linear Algebra
- Computation Theory (Operating System / Binary)
- Some Calc for:
- Numerics (High Precision / Order of Convergence)
- Stats (Area Under The Curve / Standard Deviation)
Studied Computer Science many years ago and been a programmer for over 30 years and this really made me life. Very clever.
The secret is a quote from Bertrand Russell on mathematics! Or at least one in a similar vein. Maybe you asked ChatGPT to make a quote about mathematics and it came up with this one lol. here's the text:
"Mathematics are the result of mysterious powers which no one understands, and which the unconscious recognition of beauty must play an important part. Out of an infinity of designs, a mathematician chooses one pattern for beauty's sake and pulls it down to earth."
Nice one, seems like it encoded in base64 UTF8. This is what Chat GPT gave me as a result on first string:
"Mallhematics arT▒▒▒ result" . But as a lazy developer I used IPhone camera to take a string from a youtube video, and it capture couple characters in a wrong way.
I am a math teacher in a high school teaching to students studying informatics curriculum. Thanks a lot for this one!! 🙏🏻
Chat GPT can decrypt the message instantly. It also explains that it is encrypted in Base64 which is a common encoding scheme used to represent binary data in ASCII format. It even corrects misspellings in the encryption.
Wow. Someone finally made Log make sense. My hat is off to you!
As a math challenged programmer/gamedev, please give us more content like this! 😮🤯
Linear algebra for RSA. I think linear algebra is more related to AES.
Yup. Cryptography in general is mostly number theory, specifically finite fields.
Small nitpick: linear regression isn't just for lines. Fitting a polynomial or some linear combination of functions makes it linear in the linear algebra sense.
Small nitpick: RSA doesn't involve linear algebra at all. I think you might have meant to say AES instead, which represents the data to be encrypted as matrices and involves matrix multiplication in the MixColumns step
Yeah was thinking the same. Number theory would've been a much better section title.
Diving deeper of the harder topics here would be nice, like a 15 minute linear algebra video or something
While studying data science, I found my two favorite algorithms. Hierarchical crustering and decision trees make incredibly satisfying visuals that most people can read without a lot of explanation.
7:52 JIAN YAAAAAANG
I am amazed by how programmers are still avoiding math.
@@bob-manuel bro thinks hes socrates
@Bob-Manuel i sense chatgpt in this comment
I don't think they do tho
The ones that don't have a formal education in STEM fields, yeah. The rest of us didn't have a choice when it came to learning the math bits haha
It's a shame though, because math is so incredibly useful and honestly very interesting when you strip away all the formalities and focus on the concepts themselves.
That's kind of the problem though, math isn't really math unless it's strictly formal and the formal definitions often don't make it obvious what they actually mean in a practical sense, which prevents people from seeing the bigger picture that is so valuable. That's why many people get turned off by it, if you don't have a good teacher or do your own research you lose the value in the noise of the formalities.
Only game dev and data scientists love math
1:07
this is a sensitive scene
>:(
You are the greatest math teacher ever! Please more videos like this!
i used to be really good at math... But then as a young adult i didn't need it as much.. but now i learnt it again because i need it, and in the process of "relearning"... i figured out why some don't like math...
Guys, if you don't like math, you need to understand how mathematicians think.. Math is not hard, it's just mathematicians are lazy. The symbols and letters mathematicians use, it's basically to shorten the formula. And it's humans like you and me who come up with those symbols and letters...
So for each thing you learn, whether it's algebra or whatever... I HIGHLY recommand you try to learn the history of the symbols used. It really helps
4:42 Is that not just A?
Yes, he just showed a very convoluted method of displaying a
yes but with some of b because its not just A at that point
Dude just taught me logarithms like it was nothing
Lmao
My Brain broke at 3:49
The personality shines through and keeps viewers coming back.
Your ability to simplify complex concepts is impressive and greatly appreciated
If this inspires web developers to improve website efficiency, it has fulfilled its purpose.
IMO one should also learn the basics of these:
- Predicate Logic
- Modal Logic
- Abstract Algebra
- Category Theory
Add to that Type Theory too
@@astroid-ws4py I forgot Lambda Calculus, too.
Category theory is worthless unless you're a mathematician (which means you can get money to study it), but for programmers it has negative value because you could be learning something useful instead.
@@isodoubIet I've built an Prolog-like embedded DSL for Python using Monads. I found that Category Theory served me very well there.
Also: There's a thing called the Curry-Howard-Lambek correspondence which states that I'm a mathematician. Look it up.
Floating point doesn’t actually let you “trade range for precision”. The range and precision are still determined by the specification, IEEE 754. Floating point lets you not have to waste space with all the digits that would be unnecessary precision on very large or small numbers. The main idea of floating point is just a spec for interpreting binary as scientific notation. It saves you from having to waste bits writing out extra zeros.
For example in base 10, say I want to write 157 quadrillion, or 157,000,000,000,000,000, or 1.57x10^17. That’s a lot of digits wasted on zeros, since I probably didn’t care about anything past the first three. So instead, we agree in advance that the first two digits actually tell you the number of decimal places to move, and the rest is a number with the decimal after the first digit. So now I write 17157, and I just communicated an up-to 99 digit number to a three digit precision with only 5 digits. And not only does it save space in storage or memory or transmissions etc, it’s also easier to multiply and add very very large or small numbers, ultimately because this representation contains much less information/specificity than a normal 99 digit number.
Then a couple tricks to make the most out of the problems of wanting to approximate the continuous, infinite Real numbers using a finite number of discrete bits. FP does have a bounded range, and there are some combinations of exponent and coefficient that would be unused, so they gave them some utility meanings like infinite and Not a Number as part of the standard, etc etc. And every binary number starts with one, so you can just assume it and save a bit.
That was probably the most useful and educative video I've seen so far
If you were my Math teacher, I would have completed my college and would have processed a Computer Science Degree. This is definitely a great way of teaching. But now, I turned out a self taught software engineer 😅.
Wait but if I'm not rich and I'm not handsome, how can I afford an OF girlfriend?
Start programming
You can’t. She is supporting you.
@@ammon46298 I'm okay with that too how do I get one?
brhh, is math gay? at 0:10
Is that because it’s rainbow?
1:29 nice reference right there, Schrödinger's cat is in alive and dead state at the same time😺
I moved from Belarus to Poland to learn it - profession , since there is no such education in my country. I even started doing my own programming lessons. It seemed to me that if you start teaching others, you yourself will learn a lot. And in this, after a while, I turned out to be right. So I would like to give you guys a piece of advice. The main thing is trying. Try and you will succeed. After all, without this there will be no result. Good luck to all)
You just explained the feyman technique
Nice. Thanks man. Please never stop these sorta videos. I am fond of this type of stuff.
The first ever video I have watched at velocity x0.75. And going to watch again.
Bravo!
Super !
Thank you, all-in-one !
3:32 holy shit that log explanation is incredible, not just for computer science but also for maths
I can’t believe the amount of useful information you just taught me in a matter of minutes. THANK YOU!!!
i made my presentation based on ur video ..... ur script is so perfect i have no other option..