Unfortunately, his simple explanation of these concepts is just not correct. He claims functors are a container you can map on and that monads are also containers.
Here's a monad (which is also an applicative functor) that isn't a container: probability. The space of probability distributions is a functor which can be mapped. In the sampling representation:
p.map(f) = new Prob {
def draw = f(p.draw)
}
It also supports flatmap: p.flatMap(f) = new Prob {
def draw = f(p.draw).draw
}
Yet nothing is "contained". Each Prob object is just a random number variable generator.