Backwardation and Contango

I understand what does backwardation and contango mean, but I do not get the market factors that create them. In other words, why would futures prices be lower than spot prices at times and vice versa?

General idea, formula from level1:

futures price = spot price + storage costs – convenience yield

Relative to spot prices, futures prices are higher when storage costs are higher, and futures prices are lower when the convenience yield is higher.

There.

That’s better.

This made a piece of cake, thanks a lot!