The Difference between JS Expressions and Statements

Поділитися
Вставка
  • Опубліковано 11 лип 2023
  • When writing JavaScript and especially when using frameworks like React, it is important to understand the difference between statements and expressions so you can understand the error messages that you can get.
    Code from video:
    gist.github.com/prof3ssorSt3v...

КОМЕНТАРІ • 35

  • @uchennachukwuba
    @uchennachukwuba 5 місяців тому +5

    Only 29 comments? This channel is the most underrated I’ve ever come across. Clear and concise

  • @bostongreen1629
    @bostongreen1629 10 днів тому

    WOW, I guarantee this will decode makes sense of a lot of concepts when working with JS. BRAVO, the way you explain it

  • @AhmadJubair
    @AhmadJubair 11 місяців тому +4

    Thanks for the clear-cut explanation, Steve. I've been working with Reactjs for some time but still had a bit of confusion about the differences between these two. Understood now.

  • @alisahi8bp10
    @alisahi8bp10 7 місяців тому +2

    After learning fundamentals of JS & ReactJS from John Smilga (Codding Addict). I was looking for someone who can give a deeper dive into the JS concepts.. And Steve fullfilled everything i was looking forward... All i can say is Thankyou for ur service.

  • @AlazTetik
    @AlazTetik 11 місяців тому +5

    Yet again, great and useful summary!

  • @bapi6060
    @bapi6060 11 місяців тому +4

    Really great explanations!

  • @KurkoVarangian-kg2zj
    @KurkoVarangian-kg2zj 2 місяці тому

    This channel has hands down the best explanations

  • @shahinza
    @shahinza 11 місяців тому +5

    Thank you professor.

  • @truth8690
    @truth8690 11 місяців тому +1

    great and simple explanation.

  • @user-mb1qe8je2v
    @user-mb1qe8je2v 5 місяців тому

    Awesome explanation, thanks

  • @barungh
    @barungh 11 місяців тому

    When I come to UA-cam, first thing I search for is your new video 🙂

  • @s1gma9000
    @s1gma9000 3 місяці тому

    killer video, u saved me time!!

  • @apex-lazer
    @apex-lazer 8 місяців тому

    Thank you again!

  • @mehdi-vl5nn
    @mehdi-vl5nn 11 місяців тому +1

    like many other topics in the world of programming languages, is heavily dependent on the language designers' interpretation of meanings.
    Your example:
    const getRectArea = function(width, height) {
    return width * height;
    };
    is actually a Function expression in JavaScript, where functions are objects themselves.
    Another example can be found in JavaScript's Promises, which are often equated with Futures in other languages but are actually coroutines.
    A funny example from the world of Python is that Tasks are actually Futures.

  • @MarstonH
    @MarstonH 4 місяці тому

    🔥

  • @user-oc9cf3vw8i
    @user-oc9cf3vw8i 11 місяців тому

    Thanks ❤

  • @Sonu_Kr95
    @Sonu_Kr95 11 місяців тому

    Thanks

  • @igorr4682
    @igorr4682 11 місяців тому

    and you can have an expression inside the statement as well. In summary, expressions produce values, while statements perform actions or control the flow of a code

  • @chhavimanichoubey9437
    @chhavimanichoubey9437 11 місяців тому +1

    Interview question no doubt

  • @detaaditya6237
    @detaaditya6237 7 місяців тому

    Hi professor, thanks for the explaination!
    I want to ask about this part: let x = function(){}. You explained that this is an statement. Are you referring to the whole line or only the `function(){}` part? Because `function(){}` seems to work differently when it is standalone vs when assigned to a variable or parameter of another function. When standalone, it seems like it behaves like a statement. But when it is assigned, it returns the function value - which makes it behave like an expression. Is this true? Please correct me if I'm wrong sir.
    Once again, thanks a lot!

    • @SteveGriffith-Prof3ssorSt3v3
      @SteveGriffith-Prof3ssorSt3v3  7 місяців тому +1

      the whole line let x = function () { } is a statement.
      function ( ) { } is an expression. It is a value that you could put into a variable. If you wrap it in a set of parentheses and put another set after it then it becomes an IIFE Immediately Invoked Function Expression.
      you could place function ( ) { } inside a console.log( ) without an error. That's a good indication that it is an expression.

  • @Strasbourgeois
    @Strasbourgeois 11 місяців тому

    let f = function(){} is a statement that doesn't start with the keyword function but has a function definition within it. So it is a function expression. Am I right?
    Love your videos very much

  • @Stoney_Eagle
    @Stoney_Eagle 11 місяців тому

    So basically all I have to think of is "Can I fit this in a jsx return", basically I now never have to think about it again. neat☺

  • @traininfobd
    @traininfobd 11 місяців тому

    Sir,
    if assigning a value like a number is an expression but why assigning a ternary operator is a statement?
    var num=343; //Expression
    var alive= isAlive?1:0 / statement
    chatGPT says these are expression ,
    var x = 5; // assignment expression
    var y = x + 3; // arithmetic expression
    ?

  • @zidan3948
    @zidan3948 11 місяців тому +2

    Is it safe to say that whatever starts with a keyword is a statement?

    • @SteveGriffith-Prof3ssorSt3v3
      @SteveGriffith-Prof3ssorSt3v3  11 місяців тому +4

      Almost. Some keywords are values. Eg true false null this.

    • @zidan3948
      @zidan3948 11 місяців тому +1

      @@SteveGriffith-Prof3ssorSt3v3 I think I get it now, thanks a lot!!

  • @Denis_Victorious
    @Denis_Victorious 9 місяців тому

    Actually thanks for your awesome content, but I got a bit confused at this one. Why has been stuff like "let f = function(){}" called a Function Expression (according to MDN docs for example), whereas turns out it's a statement (according to the video)🤔

    • @SteveGriffith-Prof3ssorSt3v3
      @SteveGriffith-Prof3ssorSt3v3  9 місяців тому

      Here you go:
      function bob( ) {
      //this is a function declaration which includes a name and starts with the keyword function
      //gets hoisted with its identifier `bob`
      }
      const bob = function ( ) {
      //this is a function expression
      //which is part of a statement
      //`bob` gets hoisted but not the function
      }
      ( function ( ) {
      //this is an IIFE
      //immediately invoked function expression
      //not hoisted
      //but run as soon as it is encountered
      })( )

    • @Denis_Victorious
      @Denis_Victorious 9 місяців тому

      @@SteveGriffith-Prof3ssorSt3v3 I've got it eventually, thanks!
      Turns out I had false assumption about hoisting. I didn't realize let/const get hoisted too, only they don't get initialized in advance (in comparison with var/funcDeclarations)
      P.S.: I've just noticed your reply (due to my off comments notifications)