Affirming Vitaliy's suggestions I'll say something beyond his comprehensive answer and to a certain extent more specific.
A great mathematician S.Banach used to say (maybe as a joke) that children shouldn't be taught mathematics early because that would be a too sharp tool for them. There is an obvious analogy and this is why children shoudn't be taught Mathematica too early. I'm affraid the events such as C.Wolfram's talk at the TED conference make some kind of delusion and I feel similarly when reading (pointed out by J.M.) an interesting discussion Will it rot my students' brains if they use Mathematica?
Though in general I agree with the statements therein and find Mathematica a great computer system, however one should carefully consider WRI employees' arguments concerning such a delicate issue as teaching.
To point out helpful resources if one's aim is to be capable doing more than just press the button, it is a good way to read a clear and concise compendium by Richard J. Gaylord:
Mathematica Programming Fundamentals: Lecture Notes
Many programs at the demonstrations project are certainly useful, however in principle it is much better for understanding if they come together with Gaylord's excellent
introduction to Mathematica programming. More throughoutly is just to read the whole book by Paul R. Wellin, Richard J. Gaylord, Samuel N. Kamin (a bit more advanced for the very beginners):
An Introduction to Programming with Mathematica, Third Edition
If one needs a video tutorial I suggest to start with something fast and easy, this one by Adam Berry from the Virtual Conference 2011 is good enough :
Introduction to Functional Programming
(note that one has to register to watch it)
I find useful also this video tutorials accompanying Mathematica Cookbook by S.Mangano, which presents a wide range of interesting examples of programming from beginners' level to more advanced issues.
At last but not least I suggest that young people have to study also mathematics, since it is (in my opinion) dangerous if one accustoms to use functionality for solving equations without understanding what it really does.