TDD is low level, where you write unit, functional and integration tests that fail in order to write code that makes them pass.
BDD is higher level, where you write "stories" that describes what the user needs to do and why in order to implement functionality that makes them pass.
You generally use them together, starting by writing a story for a feature and then moving down into TDD to actually create the implementation. The lower level tests verify that your code is correct, and the higher level stories ensure that your system behaves according to the user's requirements.