Why do we need assembly language?
"So why was assembly language created?"

Assembly language was created as an exact shorthand for machine level coding, so that you wouldn't have to count 0s and 1s all day.  It works the same as machine level code: with instructions and operands.

"Which one came first?"

Wikipedia has a good article about the History of Programming Languages

"Why am I studying about assemblers in my computer engineering class?"


  Though it's true, you probably won't find yourself writing your next
  customer's app in assembly, there is still much to gain from learning
  assembly. 
  
  Today, assembly language is used primarily for direct
  hardware manipulation, access to specialized processor instructions,
  or to address critical performance issues. Typical uses are device
  drivers, low-level embedded systems, and real-time systems.
  
  Assembly language is as close to the processor as you can get as a programmer
  so a well designed algorithm is blazing -- assembly is great for speed
  optimization. It's all about performance and efficiency. Assembly
  language gives you complete control over the system's resources. Much
  like an assembly line, you write code to push single values into
  registers, deal with memory addresses directly to retrieve values or
  pointers. (source: codeproject.com)