How to understand dependency propagating?

Nixpkgs 23.05 manual | Nix & NixOS says

A dependency is said to be propagated when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency

What do “downstream” and “upstream” dependencies mean?

What are “non-immediate” and “immediate” dependencies?

Is the concept of a dependency propagating about the dependent relationship between the dependencies of a package?

Could you explain using an example or diagram?