Why Hyper Threading

I was just wondering about the reason for hyper threading. I know that it makes 2 virtual cores out of one real one but wouldn't that just be redundant? You would think that making a core split it's power into 2 for a program would just create more power usage and slow it down because all the data going into processing is just going to the same core again. I know that in the real world it does make programs that use more threads run faster. Can someone explain why? Thanks!
 
It does slow down an individual execution thread. But since there are times when a specific thread is stalled (waiting on I/O or a bad branch prediction or main memory read) then another thread that IS ready to run can take over that physical CPU because it is already setup to run on the virtual CPU. If you can keep enough threads ready to run, you can get higher aggregate throughput with hyperthreading on. But if you have a single application that starts just as many threads as there are physical CPUs and can keep the CPUs busy, then you can get better throughput with hyperthreading off.
 
My comp sci prof always liked to try to explain using food and used this very basic analogy.

Hyperthreading is like eating with two hands instead of just one. The next bite is always ready to shoved into your gaping maw.

This is different than adding more mouths (cores). If I have 8 mouths but only one hand to feed them, the mouths can eat faster than the hand can feed them. That's what Intel's i7s usually outperform FX octa-cores on everything by the absolute most demanding things because it's faster to use two hands than just one.