I think @GordonBrinkmann already explained it well but just in case, I wanted to point out what are the errors you have done and also some terminology mistakes that I really want to mention because they kind of gave me a hard time understanding the problem and what you wanted to do. Please don't have any hard feelings for this, this is a forum and I am just trying to be as helpful as I can be.
The first thing I had trouble to understand was that you wanted to apply difference on 3 objects. I understood later (after watching the youtube video) that you meant apply a difference on the Cube using the 3 obects as difference objects. The correct thing to say here is apply difference on the cube (since the cube is the only one object that will receive a Boolean modifier).
The next thing you may want to know is how the Boolean modifier (and more generally Blender's modifiers) actually works.
Blender's modifiers are non-destructive. That means, when you give a modifier to an object, the modifier's effects are visible but not permanently applied to the mesh. This allows the user to change the parameters of the modifier or even turning its visibility OFF/ON without having to undo with CTRLZ. Each modifier, though, has an
Apply function that allows you to make its effect permanent and removes the modifier from the modifier stack.
It's the same thing for Boolean modifiers. If, for example, you add a Boolean modifier to a cube and set the difference object as a cone, you will see the changes made to the cube in realtime. If you change the boolean object to another one without applying the modifier, the cone will not have any effect on the cube anymore (that's what happened in the screenshot you posted). in the tutorial, Jay applied the modifier before adding another modifier and choosing the next object as a difference object.
Long story short, there are 3 ways to do what you want to do (the 3rd way is, as stated by @GordonBrinkmann, only possible for Blender 2.8 and later).
1st METHOD - apply Boolean 3 times
This is the method shown in the tutorial. Add a Boolean modifier to the cube, choose the difference object, apply the modifier and repeat that step using the next object as difference object, apply the modifier again and add another modifier for the last object.
This method will work for as many objects as you want (just remember to apply the modifier each time) but it's a destructive method, meaning you will not be able to go back and tweak the results after you have applied the modifiers, so most of the people here would recommend using one of the two other methods instead.
2nd METHOD - use 3 Boolean modifiers at the same time
It's the non-destructive version of the 1st method. You probably know that already but you can use multiple Boolean modifiers to an object. So instead of applying the first modifier, you just leave it there, add two other ones set to difference and set the difference objects as the remaining two objects in your scene (in your case, it's the cube and the cone). Your modifier stack will then look like this :
It gives the same result as the 1st method with the added advantage that you can still change the modifiers' parameters or even modify the difference objects while seeing the effects of the modifiers update in real time.
3rd METHOD - use a collection
Since the introduction of Collections in Blender 2.8, the Boolean modifier had an extra option called
Operand Type which allows to choose an
Object or a
Collection as an Operand. So if you change the Operand Type to
Collection, you can choose an entire collection instead of just one object.
Select the 3 objects and press M and choose
type a name for the new collection.
Select your Cube, add a Boolean modifier to it, set the Operand Type to
Collection and choose the new collection you created :
As the 2nd method, it is also non-destructive but this time you only have 1 modifier in your modifier stack and if you need to add/remove a difference object, you just add/remove it to/from the collection.
Obviously, the 3rd method is the best one since it allows you to non-destructively add as many Operand objects as you want without oversaturating your modifier stack.
Sorry for the (very) long answer. I hope I still helped in some way.