No video

16.5: Higher Order Functions in JavaScript - Topics of JavaScript/ES6

  Рет қаралды 152,574

The Coding Train

The Coding Train

Күн бұрын

In this video, I discuss "higher order functions" in JavaScript.
🎥 Next Video: • 16.6: Array Functions:...
🎥 Topics of JavaScript/ES6: • 16: Topics of JavaScri...
🎥 ES6 Arrow Function: • 16.3: ES6 Arrow Functi...
🎥 Closures in JavaScript: • 9.6: JavaScript Closur...
🚂 The Coding Train website: thecodingtrain....
💖 Support this channel on Patreon: / codingtrain
🛒 To buy Coding Train merchandise: www.designbyhu...
📚 Book recommendations: www.amazon.com...
💻 github.com/Cod...
🎥 For an Introduction to Programming: • Start learning here!
🎥 For More Coding Challenges: • Coding Challenges
🔗 p5js.org/
🔗 processing.org
📄 Code of Conduct: github.com/Cod...

Пікірлер: 194
@lolulol4
@lolulol4 6 жыл бұрын
The syntax is not the only difference between arrow and regular functions. An arrow function does not create its own context, while regular ones do. This is something important to keep in mind.
@POGOLAUNCHER
@POGOLAUNCHER 6 жыл бұрын
Yeah, same as .bind(this) on a normal function.
@TheCodingTrain
@TheCodingTrain 6 жыл бұрын
Yes, this is key! Thank you for the comment. I wish I had mentioned this during the video. I do discuss this aspect in my arrow functions video. Will pin this comment so others see.
@lolulol4
@lolulol4 6 жыл бұрын
POGOLAUNCHER while that is one of its benefits and gives somewhat of the same result, I wouldnt say it's exactly the same. It can also get you results you dont want
@guinwhite
@guinwhite 4 жыл бұрын
Gotta keep those arrows out of object key-value statements that use "this"....right?
@adityadubey5204
@adityadubey5204 3 жыл бұрын
but what does that actually mean?
@iTzJimBoi
@iTzJimBoi 4 жыл бұрын
How you can remain engaged and ENGAGING throughout your videos is a skill I'm highly jealous of. You take a screen full of code and humanize it. I'm currently stuck in class trying to prove higher order functions work by rewriting them in our own words...and it's not fun. It's basically .filter() my joy out of my personal array. Your channel is a gushing spring river on a hot summer's day.
@keving6758
@keving6758 3 жыл бұрын
his enthusiasm is what every other programmer needs on their tutorial videos. Literally if other people were like this, i would of learned java so much faster
@juanok2775
@juanok2775 6 жыл бұрын
honestly your videos are awesome 20 mins tutorial feels like 5 mins... thanks!!
@guinwhite
@guinwhite 4 жыл бұрын
especially when you watch them at 1.75 speed (like I do)
@adityadubey5204
@adityadubey5204 3 жыл бұрын
so true I love the enthusiasms!
@jw7665
@jw7665 5 жыл бұрын
Usually I have to speed the video up, but this time I slowed it down a bit lol. Dudes a ball of energy, makes a great teacher.
@zinsy23
@zinsy23 4 жыл бұрын
I never knew programming could even be like this! This is incredible!
@Momosun2018
@Momosun2018 4 жыл бұрын
"A function that expects a function as a parameter, creates a function and/or returns a function." - this did it for me. Thank you!!!
@percy888ferry
@percy888ferry 6 жыл бұрын
You can take it even further:- const multiplier = factor => x => x*factor; although readability can suffer a bit.
@jkf16m96
@jkf16m96 2 жыл бұрын
const multiplier = factor => number => number*factor; I think just changing "x" with "number" might be readable enough (unless the reader doesn't know arrow syntax).
@gabef9538
@gabef9538 2 жыл бұрын
I'd can keep a set of curly braces around the inner function.
@danielrodas7692
@danielrodas7692 3 жыл бұрын
Wasn't too sure how higher order functions worked but came across this video and it explained it very clearly. Thank you!
@christopherholt3782
@christopherholt3782 2 жыл бұрын
this guy has to be the most likeable person i've come across on YT
@mistermomo2904
@mistermomo2904 4 жыл бұрын
I'm still in high school, but i get the sensation that i'd learn more from this guy in 16 minutes than a professor in hours
@eatfrenchtoast
@eatfrenchtoast 4 жыл бұрын
Behind all the KZfaqrs and behind KZfaq itself are people that grinded it out in higher education. Don't get too high on the education bashing juice.
@neonhoshi
@neonhoshi 2 жыл бұрын
Thank you for this video!!! I have read and read my lesson over and over, but after coding along with you it finally made sense!!!
@jetspray3
@jetspray3 3 жыл бұрын
Coding Train for clear concise explanation.
@human3rr0001
@human3rr0001 3 жыл бұрын
You are so awesome to watch. I have a ton of fun and laugh a lot just tuning into your videos!
@danilo86petrovic
@danilo86petrovic Жыл бұрын
This is the best explenation of higher order functions that i seen... Only now i understand it after so many watched tuturials... Thank you!!! 👍
@katherinedragieva
@katherinedragieva 4 жыл бұрын
You are a great teacher. I always come here when there's something I can't understand. :)
@Dylan_thebrand_slayer_Mulveiny
@Dylan_thebrand_slayer_Mulveiny 5 жыл бұрын
What's crazy is you could also do const multiplier = factor => x => x * factor In fact, if you wanna get extra crazy, you can keep nesting the pattern as far as you want. I seriously love JS.
@davidmcdougald6695
@davidmcdougald6695 6 жыл бұрын
I finally subbed after this one. I finally understand whats going on with ES6 and callbacks.
@RodrigoCastroAngelo
@RodrigoCastroAngelo 6 жыл бұрын
That dab in 1:31 was flawless! Also, I don't remember where I saw it, something about functional programming I guess, but they had a similar example: You have a function multiply(a,b) with two argments. If you call multiply(2,3) it returns 6 But you can also call multiply(2) which returns a function like that doubler, which multiplies to 2 whatever you pass in to it
@sadhlife
@sadhlife 6 жыл бұрын
that was definitely not a dab tho :P
@hugodelnegro
@hugodelnegro 5 жыл бұрын
You are great, your entertaining skills while teaching are outstanding
@lukes5631
@lukes5631 2 жыл бұрын
It crazy how entertaining you make coding. Your energy literally seeps through the screen.
@dgh25
@dgh25 Жыл бұрын
"literally"? Your screen is leaking? Did you mean "metaphorically"?
@lukes5631
@lukes5631 Жыл бұрын
@@dgh25 No. I mean literally because he is an exceptional and embodied communicator whose energy you can FEEL through the screen you dunkin' donut head.
@WistrelChianti
@WistrelChianti 2 жыл бұрын
Thanks I'm new to these arrows too so this has really helped!
@techtronixweb7040
@techtronixweb7040 6 жыл бұрын
I was a bit confused at first but you tied it all together nicely with the doubler tripler functions. Nice work.
@kopilkaiser8991
@kopilkaiser8991 2 жыл бұрын
I enjoy watching your energy and interest in explaining programming logic. You have helped me understand this concept easier. I have tried reading many articles and forums for understanding Higher Order Functions but couldn't grasp the idea of it. But, you have helped me understand it better. Thank you so much for giving such efforts in explaining the complex ideas. Keep it up. I've subscribed to your channel to follow you regular.
@santiagoramirez5507
@santiagoramirez5507 3 жыл бұрын
The best coding teacher! Thank you so much!!
@cnsnmms3708
@cnsnmms3708 4 жыл бұрын
Yes. An explanation should be like this.
@yavasel
@yavasel 4 жыл бұрын
Hello, mate. Thank you very much. You are very good on this. This is the best coding video I have ever watched. I wish I could contribute you doneting this beautiful video but l lost my job 2 weeks ago because of covid.
@Locationary
@Locationary 5 жыл бұрын
argh thank you so much for this video, explained it so much better then the current ebook I'm working off
@blusanders
@blusanders 3 жыл бұрын
These are new to me and hard to wrap my brain around just yet but this is the best explanation thus far for me :) Thanks!
@aayanguren
@aayanguren 4 жыл бұрын
Honestly watching you make the same (minor) mistakes I make, makes me feel a lot better about my experience learning code. Except, I spend thirty minutes questioning everything I've learned studying functions, before realizing I forgot the second "i" in multiplier. "Like what the? I thought I understood this!!! What happened?!"
@MalikJamazov
@MalikJamazov 4 жыл бұрын
You are the best! You solve my questions about high-ordered functions!
@Nyamistaya
@Nyamistaya 6 жыл бұрын
Your videos are useful not only for javascript, i really appreciate
@rnmmakings4989
@rnmmakings4989 8 ай бұрын
i really like your funny way and expressions to explain things.
@setupdraw7642
@setupdraw7642 6 жыл бұрын
Nice tutorial but I think it is not 100% clear (at least to me) how "x" argument is handled by the function; where the "x" parameter comes from (where it gets defined as a variable) and how it is passed in the factory function.
@Dylan_thebrand_slayer_Mulveiny
@Dylan_thebrand_slayer_Mulveiny 5 жыл бұрын
It's basically inheritance. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
@4ipon4ik
@4ipon4ik 4 жыл бұрын
function multiplier(factor){ return x => x * factor; } let doubler = multiplier(2); // now doubler = x => x * 2; // so doubler(4) returns 4 * 2; // doubler assigned multipliers returned function
@darkthrongrising5470
@darkthrongrising5470 6 жыл бұрын
Yours are the very best tutorials, you give really good quality education here, thank you very much sir.
@joeekadi
@joeekadi 3 жыл бұрын
Love your videos mate, super helpful and really enjoyable to watch. Thank you!
@thedotisblack
@thedotisblack 6 жыл бұрын
That's quite relevant... Especially since I always get headache from those higher order functions!! 🙃⚫ Thanks for the video!
@syedarmaghanhassan4652
@syedarmaghanhassan4652 3 жыл бұрын
Thanks for sharing. Tip. 10:00. Don't lift your hand too much higher than the green-screen!
@fuzzylilpeach6591
@fuzzylilpeach6591 6 жыл бұрын
OH MY GAWD IT MAKES SENSE NOW
@papii_6669
@papii_6669 6 жыл бұрын
I learned this for swift a while ago, good video :)
@ninglizhu2255
@ninglizhu2255 5 жыл бұрын
still not easy for me to understand totally... but your video is great!
@adamnorman85
@adamnorman85 2 жыл бұрын
You're great as you always 😘
@ynotbutcher1891
@ynotbutcher1891 5 жыл бұрын
you are very majectic the way you teach, bahaha it works!
@elgary9074
@elgary9074 3 жыл бұрын
Thank you for this amazing explanation!
@stuffedpeanuts
@stuffedpeanuts 2 жыл бұрын
Great tutorial
@ginalin310
@ginalin310 5 жыл бұрын
soooo gladdd I find you
@saminchowdhury7995
@saminchowdhury7995 4 жыл бұрын
7:25 me whenever I see food.
@user-bx9pj9lc4x
@user-bx9pj9lc4x 4 жыл бұрын
I like your teaching
@Mari_Selalu_Berbuat_Kebaikan
@Mari_Selalu_Berbuat_Kebaikan Жыл бұрын
Let's always do good 🙏
@gabef9538
@gabef9538 2 жыл бұрын
This could do interesting things with optimization of damage calculations that include special effects being doubled.
@papinkelman7695
@papinkelman7695 6 жыл бұрын
No diminishing return on the Coding Train.
@iandareopal
@iandareopal 6 жыл бұрын
I do not understand what is being passed through as x in these examples, it seems as though you are only passing a value for factor.
@magdalenahlohovska1738
@magdalenahlohovska1738 5 жыл бұрын
he sets the value for x when he calls the function in console
@CharlesGouin
@CharlesGouin 6 жыл бұрын
We all love those good old factories.
@ore_bear8045
@ore_bear8045 3 жыл бұрын
thank you!, very well explained
@Solsenderz
@Solsenderz Жыл бұрын
Well, I thought I could teach myself what is hof in the video, but instead, I'm more confused now, lol) definitely not for beginners, it's so fast to catch all of your ideas
@fdj1966
@fdj1966 3 жыл бұрын
thanks for the great video....
@ukaszczaja9400
@ukaszczaja9400 5 жыл бұрын
If You haven't already, then try watching Daniel's videos in 1.5x speed (or even more). It's quite funny 😂.
@sahilcoleslaw
@sahilcoleslaw 4 жыл бұрын
I do 1.75x :)
@sumantkanala
@sumantkanala 6 жыл бұрын
applying this to multiplier function itself, it looks like this: const multiplier = factor => x => x*factor
@TheCodingTrain
@TheCodingTrain 6 жыл бұрын
thanks for this tip!
@amogus7
@amogus7 3 жыл бұрын
Everything between () will recognise as function argument and will return as a constant variable
@Suviiii69
@Suviiii69 8 ай бұрын
😭🥺rll appreciate this viddddd
@Weeb940
@Weeb940 Жыл бұрын
thank you so much for this toturiale
@mainlandbahr2176
@mainlandbahr2176 3 жыл бұрын
How does the doubler(x) call work when there are no parenthesis holding parameters in the definition let doubler = mutiplier(2); I saw a comment below that mentions inheritance in JS, but I was still unable to make sense of this as it looks implied and not defined.
@darsh_shukla
@darsh_shukla 4 жыл бұрын
Dan will you make a playlist separate for functional programming please
@jakefreise7601
@jakefreise7601 6 жыл бұрын
Do you have any plans on completing part 3 of the agario code challenge? Looking forward to it!
@mssadewa
@mssadewa 5 жыл бұрын
damn! I just subscribed and enjoy how you present this!
@mekelilyasa9561
@mekelilyasa9561 2 жыл бұрын
what is the different between closure and higher order function? newbie here
@okoiful
@okoiful 6 жыл бұрын
Awesome!!!! ive been waiting for stuff like this for a looong time!!! :) . can u pease do more functional programming stuff? thanks!!!!
@neddev2990
@neddev2990 2 жыл бұрын
Clickety, click, click.... don't mind me. I'm getting stuff that i didn't understand before! great tutorial.
@wreak3r
@wreak3r 6 жыл бұрын
Also just in case you come across this syntax, you may call the multiplier function like so: multiplyer(2)(4) and get 8 as result.
@TheCodingTrain
@TheCodingTrain 6 жыл бұрын
Thanks for the tip!
@ErrorDebug
@ErrorDebug 4 жыл бұрын
Hi thanks for your videos you are awesome healthy guy! I have one question cus i am a beginner, I see this first time, how can you pass a number into a variable 'doubler(4)' and that variable knows that you are referring to returned x parameter??? How and why it knows that, how is that linked?
@thebuildguy7
@thebuildguy7 4 жыл бұрын
I would agree more if someone said the father of computer science has a youtube channel named "The Coding Train", rather than memorizing his name from my GK book in first grade.
@phantasmFES
@phantasmFES 5 жыл бұрын
thank u so much for this video ^_^ u made it very entertaining
@lucasteixeiranl4473
@lucasteixeiranl4473 3 жыл бұрын
hahaha you are awesome!
@latostadaa
@latostadaa Ай бұрын
Hello, i have a question: Why doubler's argument becomes the X on the multiplier function? If somebody could help me i would be grateful.
@chrismanuel8993
@chrismanuel8993 5 жыл бұрын
hey thanks for this!
@anmolagarwal5952
@anmolagarwal5952 4 жыл бұрын
Do await and async use this higher order functions?
@OfficialYunas
@OfficialYunas 6 жыл бұрын
The arrow functions look like python lambdas
@michielarkema
@michielarkema 5 жыл бұрын
Because it is lambda xd
@ruuji.
@ruuji. 4 жыл бұрын
So I tried shortening the whole thing up and came up with this: let add = addition => { return x => x + addition; } Same with multiple, just as an addition.
@frankrizzo5181
@frankrizzo5181 4 жыл бұрын
I accidentally set the tripler factor to 4 and when changing it to three I got an error telling me identifier tripler had already been declared. It's a "let" declaration ......?
@brod515
@brod515 5 жыл бұрын
Can get even more cryptic if you want... let multiplier = factor => x => x * factor;
@mohammadalrefaai-games8034
@mohammadalrefaai-games8034 4 жыл бұрын
thank u thank u thank u
@amirulidzham3686
@amirulidzham3686 5 жыл бұрын
The code executed is 4 x 2 right? not 2 x 4 isn't? at 15:10
@angelcaru
@angelcaru 4 жыл бұрын
11:30 const multiplier = factor => x => x * factor; :)
@manu_prasadh
@manu_prasadh 6 жыл бұрын
Thanks for this video
@mightyocean411
@mightyocean411 3 жыл бұрын
const multiplier = factor => x => x*factor, all in one line
@elbekkhaitov683
@elbekkhaitov683 5 жыл бұрын
What this guy smokes before every video? Anyway good job
@JonatanEdOrtiz
@JonatanEdOrtiz 4 жыл бұрын
Amazing
@juliancaste3914
@juliancaste3914 5 жыл бұрын
awesome !! I really like this videos
@petsinyourhair
@petsinyourhair 6 жыл бұрын
Correct me if I'm wrong, but usually this is called 'Closures' in JavaScript. I don't disagree that they are also higher order functions, but this concept isn't how it is usually refered to.
@sumantkanala
@sumantkanala 6 жыл бұрын
Please watch the whole video.
@petsinyourhair
@petsinyourhair 6 жыл бұрын
Sorry, I didn't ask anything. Not sure what you reply to...
@sumantkanala
@sumantkanala 6 жыл бұрын
I'm not correcting you as you said earlier in your comment, just stating that the what you described is discussed if you watch the whole video.
@petsinyourhair
@petsinyourhair 6 жыл бұрын
Your comment is very useful. I wouldn't have wished I wouldn't have had missed it.
@VimalKumar-dl5jb
@VimalKumar-dl5jb 6 жыл бұрын
arrow function dont requried return value r we need to return the value
@konstantinkkk8397
@konstantinkkk8397 4 жыл бұрын
does it higher order or destructuring? I cannot understand this code. Snippet where function return function function fluent(fn) { console.log(fn); return function (...args) { console.log(args); }; } function Person() {} Person.prototype.setName = fluent(function (first, last) { this.first = first; this.last = last; }); let Peter = new Person(); console.log(Peter); Peter.setName("Peter", "Parker");
@denzelsugayan432
@denzelsugayan432 3 жыл бұрын
i cant seem to process the code in the example at my vs code
@emerson-sheaapril8555
@emerson-sheaapril8555 5 жыл бұрын
like a couple others below I'm a little confused how JS knows to pass doubler or trippler to the x variable.
@emerson-sheaapril8555
@emerson-sheaapril8555 5 жыл бұрын
@@Dima1415 Thanks!
@quizzicalsebag
@quizzicalsebag 5 жыл бұрын
well i still dont get it.
@trex283
@trex283 5 жыл бұрын
What ide do you use for js programming?
@VimalKumar-dl5jb
@VimalKumar-dl5jb 6 жыл бұрын
passing function to function or returning a function is called higher order function right
@TheCodingTrain
@TheCodingTrain 6 жыл бұрын
correct!
@rominatulli4243
@rominatulli4243 5 жыл бұрын
I love your voice.
@mortyjr2334
@mortyjr2334 5 жыл бұрын
So is the arrow function like a lambda expression in Java?
@TheCodingTrain
@TheCodingTrain 5 жыл бұрын
indeed!
@mortyjr2334
@mortyjr2334 5 жыл бұрын
The Coding Train Thanks!
@syedarmaghanhassan4652
@syedarmaghanhassan4652 3 жыл бұрын
please show us a useful example which we can't achieve without a higher order function!
@vladthe_cat
@vladthe_cat 4 жыл бұрын
I've done this in Lua
16.6: Array Functions: map() and fill() - Topics of JavaScript/ES6
14:26
The Coding Train
Рет қаралды 114 М.
16.3: ES6 Arrow Function - Topics of JavaScript/ES6
22:32
The Coding Train
Рет қаралды 272 М.
Чёрная ДЫРА 🕳️ | WICSUR #shorts
00:49
Бискас
Рет қаралды 6 МЛН
The Giant sleep in the town 👹🛏️🏡
00:24
Construction Site
Рет қаралды 21 МЛН
Meet the one boy from the Ronaldo edit in India
00:30
Younes Zarou
Рет қаралды 19 МЛН
Get 10 Mega Boxes OR 60 Starr Drops!!
01:39
Brawl Stars
Рет қаралды 19 МЛН
Coding Challenge 180: Falling Sand
23:00
The Coding Train
Рет қаралды 884 М.
The Story of Next.js
12:13
uidotdev
Рет қаралды 568 М.
Object Oriented Programming vs Functional Programming
18:55
Continuous Delivery
Рет қаралды 752 М.
Lambda Calculus - Computerphile
12:40
Computerphile
Рет қаралды 1 МЛН
Higher Order Functions in JavaScript Explained Simply
9:55
Teddy Smith
Рет қаралды 7 М.
16.8: Array Functions: filter() - Topics of JavaScript/ES6
11:11
The Coding Train
Рет қаралды 130 М.
JavaScript Pro Tips - Code This, NOT That
12:37
Fireship
Рет қаралды 2,5 МЛН
Higher Order Functions - JavaScript Tutorial
10:10
ColorCode
Рет қаралды 65 М.
Чёрная ДЫРА 🕳️ | WICSUR #shorts
00:49
Бискас
Рет қаралды 6 МЛН