Well learning all this stuff at once isn't a good approach I guess. I started with C++ and now moved to reversing with OllyDbg but I don't consider myself an experienced coder yet. I'm just starting out.
I don't know how much you've learned about programming until now, but I suggest you to stick to the subject you're learning until you think you got the basic understanding of how it works.
Then you can either learn more in depth stuff or move on to another section of programming/hacking which is quite familiar to the last one.
I think the fastest way to learn all this stuff is by keeping your thirst for knowledge constantly at the highest level you can.